¿Cómo configurar / obtener pandas.DataFrame a / desde Redis?

Después de configurar un DataFrame para redis, luego recuperarlo, redis devuelve una cadena y no puedo encontrar una manera de convertir esta cadena en un DataFrame.

¿Cómo puedo hacer estos dos adecuadamente?

conjunto:

redisConn.set("key", df.to_msgpack(compress='zlib')) 

obtener:

 pd.read_msgpack(redisConn.get("key")) 

No pude usar msgpack debido a los objetos Decimal en mi dataframe. Intead combiné pickle y zlib juntos de esta manera, asumiendo un df dataframe y una instancia local de redis:

 import pickle import redis import zlib EXPIRATION_SECONDS = 600 r = redis.StrictRedis(host='localhost', port=6379, db=0) # Set r.setex("key", EXPIRATION_SECONDS, zlib.compress( pickle.dumps(df))) # Get rehydrated_df = pickle.loads(zlib.decompress(r.get("key"))) 

No hay nada específico del dataframe sobre esto.

Advertencias

  • La otra respuesta utilizando msgpack es mejor: msgpack si te funciona.
  • El decapado puede ser peligroso: su servidor Redis debe estar seguro o usted está buscando problemas.