Самый эффективный способ получить несколько хэшей в Redis? - PullRequest
19 голосов
/ 08 февраля 2011

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

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

1 Ответ

37 голосов
/ 17 февраля 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...