Есть ли способ иметь следующее в 1-запросу 1-ответ?Труба Редиса как атомная
дали Redis набор с именем ключа и для каждого ключа имеет REDIS хэш с полями
Как я могу извлечь хэши этих ключей в один присест?
что-то подобное, что это лучшее, что можно сделать (не уверен, что это будет работать, но вы получите идею)
hashes = []
keys = redis.smembers("myset")
redis.multi do
keys.map do |k|
hashes << redis.hgetall(k)
end
end
hashes = hash.map(&:value) # to resolve future values
, но это делает по крайней мере два запроса (который не является лучшим, но ok), не знаете, как Redis :: Future решает оценить (если он отправляет другой запрос или нет)
Я должен был понять, что использование multi делает все внутри в одном сетевом запросе, нет? –
'MULTI' - это начало транзакции - он позволяет вам совершать или откатывать все изменения сразу, но они все равно выполняются как отдельные вызовы Redis. – jmruc
Действительно, хотя генерация имен ключей или их чтение из БД (например, 'smembers') противоречит рекомендации использовать аргумент массива' KEYS 'для сценария Lua и будет проблематичным для запуска в кластерном кластере –