2011-02-08 3 views
16

Итак, я уже прочитал this post о том, что не существует аналога MGET для хэшей Redis. Один из ответов сказал использовать MULTI/EXEC, чтобы сделать операцию навалом, и это работает для списков и обычных ключей, но не для хэшей, к сожалению. Прямо сейчас, однако, я делаю звонок по проводу для каждого отдельного хэша, который я хочу получить, что для меня кажется плохими новостями.Самый эффективный способ получить несколько хешей в Redis?

Так что мой вопрос: что такое самый эффективный способ получить несколько хешей назад от Redis, при этом уровень эффективности является наименьшим числом сетевых вызовов? Я использую Redis 2.0.4, программируя с помощью Python-клиента. Благодаря!

ответ

31

Наиболее эффективным способом будет использование трубопровода.

Предполагая, что вы хотите, все для данного ключа и знать все ключи уже:

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 

Более подробную информацию о трубопроводах можно найти здесь: http://redis.io/topics/pipelining