2011-02-08 14 views
16

Quindi ho già letto this post circa non essendo un analogo MGET per gli hash di Redis. Una delle risposte ha detto di usare MULTI/EXEC per eseguire l'operazione in blocco, e che funziona per gli elenchi e le chiavi normali, ma non per gli hash, sfortunatamente. In questo momento, comunque, sto facendo una chiamata sul filo per ogni singolo hash che voglio recuperare che mi sembra una brutta notizia.Il modo più efficiente per ottenere diversi hash in Redis?

Quindi la mia domanda è: qual è il più modo efficiente per ottenere diversi hash da Redis, con lo standard di efficienza che rappresenta il numero minimo di chiamate di rete? Sto usando Redis 2.0.4, programmando con il client Python. Grazie!

risposta

31

Il modo più efficiente sarebbe utilizzare una pipeline.

Supponendo che si vuole tutto per una data chiave e conoscere tutte le chiavi già:

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 

Maggiori informazioni sulla pipeline può essere trovato qui: http://redis.io/topics/pipelining

Problemi correlati