आप यह कर सकते हैं
एक लुआ लिपि में जिसका नाम 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
लुआ अनुक्रम key0,val0,key1,val1, आदि द्वारा हैश प्राप्त करें...
और आप इसे इस तरह से कॉल कर सकते हैं:
redis-cli eval "$(cat script.lua)" 1 "my_hash" 1
आपके पास होगा :
1) "foo"
2) "1"
3) "bar"
4) "1"
यहां eval फ़ंक्शन के लिए अधिक जानकारी
संपादित करें: जैसा कि टिप्पणी में कहा गया है, केवल मूल्यों की जांच के लिए और अनावश्यक जांच न करें, आप लूप के लिए 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