Bạn có thể làm điều này
trong một tập lệnh lua có tên 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 get hash theo chuỗi key0, val0, key1, val1, etc ...
và sau khi bạn có thể gọi nó như vậy:
redis-cli eval "$(cat script.lua)" 1 "my_hash" 1
bạn sẽ có:
1) "foo"
2) "1"
3) "bar"
4) "1"
thêm thông tin cho hàm eval tại đây
chỉnh sửa: như đã nói deltheil trong nhận xét, để chỉ kiểm tra các giá trị và không kiểm tra quá mức, bạn có thể bước vòng lặp for bằng 2 vì hiển thị yêu cầu băm là khóa, giá trị, khóa, giá trị, v.v.:
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