Можете да направите това
в lua скрипт с име 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 получава хеш по последователност key0,val0,key1,val1 и т.н....
и след това можете да го наречете така:
redis-cli eval "$(cat script.lua)" 1 "my_hash" 1
ще имате :
1) "foo"
2) "1"
3) "bar"
4) "1"
повече информация за функцията eval тук
редактиране: както каза deltheil в коментар, за да проверите само стойностите и да не правите ненужна проверка, можете да застъпите цикъла for с 2, защото изобразяването на хеш заявка е ключ, стойности, ключ, стойност и т.н...:
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