Es gibt keinen solchen Befehl, Redis-Hashes funktionieren innerhalb des Hashs, also arbeitet HMGET innerhalb eines Hashs und gibt alle Felder in diesem Hash aus. Es gibt keine Möglichkeit, auf alle Felder in mehreren Hashes gleichzeitig zuzugreifen .
Sie können jedoch mehrere HMGET für jeden Hash verwenden und alle Felder abrufen. Sie können diese Befehle per Pipeline ausführen, um sie auf einmal auszuführen.
Möglichkeit 1 Ex. Implementierung in Pseudocode
Pipeline p
List<String> = p.hgetall('key1', fields...);
List<String> = p.hgetall('key2', fields...);
List<String> = p.hgetall('key3', fields...);
p.exec();
Option 2 Eine andere Möglichkeit besteht darin, ein LUA-Skript zu schreiben und dieses mit EVAL
aufzurufenlocal 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
Rufen Sie das Lua-Skript auf
redis-cli EVAL "$(cat test.lua)" 0
1) 1) "field1"
2) "val"
2) 1) "field1"
2) "val"
3) "field2"
4) "val2"