我试图找出存储在键列表中的值,这些值与 redis 中的模式相匹配。我尝试使用 SCAN
以便稍后我可以使用 MGET
获取所有值,问题是:
SCAN 0 MATCH "foo:bar:*" COUNT 1000
不返回任何值而
SCAN 0 MATCH "foo:bar:*" COUNT 10000
返回所需的键。
我如何强制 SCAN
查看所有现有 key ?我是否必须为此调查 lua?
最佳答案
使用下面的代码,您将从光标 0 扫描第 1000 个对象
SCAN 0 MATCH "foo:bar:*" COUNT 1000
结果,你会得到一个新的游标来记忆
SCAN YOUR_NEW_CURSOR MATCH "foo:bar:*" COUNT 1000
扫描 1000 个下一个对象。然后,当您将 COUNT
从 1000 增加到 10000 并检索数据时,您会扫描更多键,然后在您的情况下匹配更多键。
要扫描整个列表,您需要调用 SCAN
直到光标给出响应返回零(即整个扫描)
使用 INFO
命令获取您的 key 数量,例如
db0:keys=YOUR_AMOUNT_OF_KEYS,expires=0,avg_ttl=0
然后调用
SCAN 0 MATCH "foo:bar:*" COUNT YOUR_AMOUNT_OF_KEYS
关于Redis 扫描计数 : How to force SCAN to return all keys matching a pattern?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33166812/