Няма такава команда, хешовете на redis работят в хеша, така че HMGET работи в един хеш и дава всички полета в този хеш. Няма начин за достъп до всички полета в множество хешове в едно .
Въпреки това можете да използвате няколко HMGET за всеки хеш и да получите всички полета. можете да пренасочите тези команди за изпълнение наведнъж.
Опция 1 напр. реализация в псевдокод
Pipeline p
List<String> = p.hgetall('key1', fields...);
List<String> = p.hgetall('key2', fields...);
List<String> = p.hgetall('key3', fields...);
p.exec();
Вариант 2 Друга възможност е да напишете LUA скрипт и да го извикате с помощта на EVAL
local array = {}
local keys = redis.call('KEYS', '<your pattern>')
for _,key in ipairs(keys) do
local val = redis.call('HGETALL', key)
array[#array + 1] = val
end
return array
Обадете се на lua sctipt
redis-cli EVAL "$(cat test.lua)" 0
1) 1) "field1"
2) "val"
2) 1) "field1"
2) "val"
3) "field2"
4) "val2"