Můžete to udělat
ve skriptu lua s názvem 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 získat hash podle sekvence key0,val0,key1,val1, atd...
a poté, co to můžete nazvat takto:
redis-cli eval "$(cat script.lua)" 1 "my_hash" 1
budete mít:
1) "foo"
2) "1"
3) "bar"
4) "1"
více informací o funkci eval zde
upravit: jak řekl deltheil v komentáři, pro kontrolu pouze hodnot a neprovádějte zbytečnou kontrolu můžete krokovat smyčku for o 2, protože vykreslení požadavku hash je klíč, hodnoty, klíč, hodnota, atd...:
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