Er is geen commando zoals dat, redis hashes werken binnen de hash, dus HMGET werkt binnen één hash en geeft alle velden in die hash. Er is geen manier om toegang te krijgen tot alle velden in meerdere hashes tegelijk .
U kunt echter meerdere HMGET's op elke hash gebruiken en alle velden ophalen. je kunt deze commando's in één keer pijplijnen om ze uit te voeren.
Optie 1 Ex. implementatie in pseudo-code
Pipeline p
List<String> = p.hgetall('key1', fields...);
List<String> = p.hgetall('key2', fields...);
List<String> = p.hgetall('key3', fields...);
p.exec();
Optie 2 Een andere optie is om een LUA-script te schrijven en dat aan te roepen met 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
Bel de lua stipt
redis-cli EVAL "$(cat test.lua)" 0
1) 1) "field1"
2) "val"
2) 1) "field1"
2) "val"
3) "field2"
4) "val2"