当前位置: 首页 > 面试题库 >

Redis扫描计数:如何强制SCAN返回与模式匹配的所有密钥?

鲁烨
2023-03-14
问题内容

我试图找出存储在与redis模式匹配的键列表中的值。我尝试使用,SCAN以便以后可以MGET用来获取所有值,问题是:

SCAN 0 MATCH "foo:bar:*" COUNT 1000

不返回任何值,而

SCAN 0 MATCH "foo:bar:*" COUNT 10000

返回所需的键。我如何强制SCAN浏览所有现有键?我需要为此研究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命令来获取您的密钥数量,例如

db0:keys = YOUR_AMOUNT_OF_KEYS,expires = 0,avg_ttl = 0

然后打电话

SCAN 0 MATCH "foo:bar:*" COUNT YOUR_AMOUNT_OF_KEYS


 类似资料:
  • 我正在尝试找出存储在一个匹配Redis模式的键列表中的值。我尝试使用以便稍后使用获取所有值,但问题是: 返回所需的键。如何强制查看所有现有键?我得去查lua吗?

  • 在Redis-Py中,我如何计算与模式匹配的键数?我发现了一些方法scan、scan_iter,但它们使用键名的模式进行搜索。 我需要的示例:

  • 我正在使用带有npm包的node.js脚本来检索匹配模式的所有Redis键。匹配的一个示例是关键字。 使用Redis 4.0.11、Node.js 8.11.3、Redis 2.8.0 npm包 重新启动Redis。仍有不完整的扫描结果 删除了与模式匹配的所有键,并将一些键添加回来。现在所有的东西都在扫描时返回。在一个小时的播放后,它再次开始返回不完整的结果。重复此操作将无法修复此问题。

  • 找不到任何有关redis扫描匹配的信息

  • 我正在寻找与此非常相似的东西,只是我想要所有的匹配,而不仅仅是第一个。在javascript中,您可以添加一个“全局”修饰符来获得所有匹配项的列表,在Java中是否也有类似的可能?

  • 问题内容: 如何找到具有匹配模式的所有键的计数。 例如,有两个键和。常见的模式是。因此,这里的计数是2。 如何在Redis中做到这一点? 问题答案: 免责声明 我希望这个旧答案不会损坏任何具有数百万把钥匙的生产系统。如果出于某种原因仍要在生产中仍然计算redis的匹配键,最好使用具有匹配模式的scan。 如果仅使用KEYS进行搜索,并使用Redis客户端,您将获得所有匹配密钥的数字列表,对吗? 例