【发布时间】:2015-10-16 09:23:32
【问题描述】:
我正在尝试找出存储在与 redis 中的模式匹配的键列表中的值。我尝试使用SCAN,以便稍后我可以使用MGET 获取所有值,问题是:
SCAN 0 MATCH "foo:bar:*" COUNT 1000
不返回任何值而
SCAN 0 MATCH "foo:bar:*" COUNT 10000
返回所需的键。
我如何强制SCAN 查看所有现有密钥?我必须为此研究 lua 吗?
【问题讨论】:
-
强制 SCAN 一次性完成整个键空间相当于运行 KEYS。请注意,正是为此目的引入了 SCAN - 不运行 KEYS。
-
@ItamarHaber 是否也像 KEYS 命令对完整迭代一样阻止键空间(一次迭代)?
-
是的 - 几乎所有的操作都是阻塞的。
-
count参数的最大值有什么建议吗?
-
"由于这些命令允许增量迭代,每次调用只返回少量元素,它们可以在生产中使用,而不会像 KEYS 或 SMEMBERS 这样可能会长时间阻塞服务器的命令的缺点对大量键或元素调用时的时间(甚至几秒钟)。”
标签: redis