如何迭代Redis键以获取其值?
如何在Redis中迭代对象并获取其所有值?大概是这样的:如何迭代Redis键以获取其值?,redis,Redis,如何在Redis中迭代对象并获取其所有值?大概是这样的: scan object* hgetall 这应该会回来 age 22 password 1234 username Sarah age 20 password 5678 username Mike 当Redis包含此数据时: hmset objectSarah age 22 password 1234 username Sarah hmset objectMike age 20 password 5678 username Mike
scan object* hgetall
这应该会回来
age 22 password 1234 username Sarah
age 20 password 5678 username Mike
当Redis包含此数据时:
hmset objectSarah age 22 password 1234 username Sarah
hmset objectMike age 20 password 5678 username Mike
谢谢您不可能只用一个命令就可以做到这一点,您需要逐个扫描并处理结果(即,
HGETALL
它们)
但是,您可以将其包装成一个Lua脚本(请参阅),该脚本接受当前游标并在将所有内容返回到客户端之前获取数据。即:
local cur, pat = tonumber(ARGV[1]), ARGV[2]
local scan = redis.call('SCAN', cur, 'MATCH', pat)
for i, v in ipairs(scan[2]) do
local data = redis.call('HGETALL', v)
scan[2][i] = { v, data }
end
return scan
运行时示例:
127.0.0.1:6379> hmset objectSarah age 22 password 1234 username Sarah
OK
127.0.0.1:6379> hmset objectMike age 20 password 5678 username Mike
OK
127.0.0.1:6379> script load "..."
"d81ace3345591b4fee7f3bf4cf28e7b260b59554"
127.0.0.1:6379> evalsha d81ace3345591b4fee7f3bf4cf28e7b260b59554 0 0 object*
1) "0"
2) 1) 1) "objectSarah"
2) 1) "age"
2) "22"
3) "password"
4) "1234"
5) "username"
6) "Sarah"
2) 1) "objectMike"
2) 1) "age"
2) "20"
3) "password"
4) "5678"
5) "username"
6) "Mike"
注: