Подтвердить что ты не робот

Самый эффективный способ получить несколько хешей в Redis?

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

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

4b9b3361

Ответ 1

Самый эффективный способ - использовать конвейер.

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

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