2011-02-08 24 views
16

Ya he leído this post acerca de que no existe un análogo MGET para los hashes de Redis. Una de las respuestas dice que usa MULTI/EXEC para realizar la operación a granel, y que funciona para listas y claves normales, pero no para hashes, desafortunadamente. En este momento, sin embargo, estoy haciendo una llamada a través del cable por cada hash que quiero recuperar, lo cual me parece una mala noticia.¿La manera más eficiente de obtener varios hashes en Redis?

Así que mi pregunta es: ¿cuál es la forma más más eficaz de recuperar varios hashes de Redis, con el estándar de eficiencia siendo el menor número de llamadas de red? Estoy usando Redis 2.0.4, programando con el cliente de Python. ¡Gracias!

Respuesta

31

La forma más eficiente sería usar una tubería.

Suponiendo que lo quieren todo para una clave dada y conocer todas las claves ya:

import redis 

r = redis.Redis(host='localhost', port=6379, db=0) 
p = r.pipeline() 
for key in keys: 
    p.hgetall(key) 

for h in p.execute(): 
    print h 

Más información acerca de las tuberías se puede encontrar aquí: http://redis.io/topics/pipelining

Cuestiones relacionadas