Самый эффективный способ получить несколько хешей в Redis?
Итак, я уже прочитал этот пост о том, что не существует аналога MGET
для хэшей Redis. Один из ответов сказал использовать MULTI/EXEC
для выполнения операции навалом, и это, к сожалению, работает для списков и обычных ключей, но не для хэшей. Прямо сейчас, однако, я делаю звонок по проводу для каждого отдельного хэша, который я хочу получить, что для меня кажется плохими новостями.
Итак, мой вопрос: какой самый эффективный способ получить несколько хэшей назад от Redis, причем стандартом эффективности является наименьшее количество сетевых вызовов? Я использую Redis 2.0.4, программируя с помощью Python-клиента. Спасибо!
Ответы
Ответ 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