Sie können dies tun
in einem Lua-Skript namens script.lua
local hash_val = redis.call('hgetall',KEYS[1])
local result = {}
for i = 0 , #hash_val do
if hash_val[i] == ARGV[1] then
table.insert(result,hash_val[i-1])
table.insert(result,hash_val[i])
end
end
return result
lua erhält Hash durch Sequenz key0,val0,key1,val1, etc...
und danach kann man es so nennen:
redis-cli eval "$(cat script.lua)" 1 "my_hash" 1
Sie werden haben:
1) "foo"
2) "1"
3) "bar"
4) "1"
weitere Informationen zur Bewertungsfunktion hier
Bearbeiten: wie gesagt deltheil im Kommentar, um nur die Werte zu überprüfen und keine unnötige Überprüfung vorzunehmen, können Sie die for-Schleife um 2 schrittweise ausführen, da das Rendern einer Hash-Anforderung Schlüssel, Werte, Schlüssel, Wert usw. ist:
local hash_val = redis.call('hgetall',KEYS[1])
local result = {}
for i = 2 , #hash_val, 2 do
if hash_val[i] == ARGV[1] then
table.insert(result,hash_val[i-1])
table.insert(result,hash_val[i])
end
end
return result