当前位置: 首页 > 知识库问答 >
问题:

如何在Redis-Py中计算与模式匹配的键数?

狄珂
2023-03-14

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

我需要的示例:

r = redis.Redis(host='localhost', port=6379, db=0)
r.set('key1', 'bar')
r.set('key2', 'bar')
r.set('key3', 'bar')
keys_num = len(list(r.unknown_scan(match='bar')))
print(keys_num)
>>3

共有1个答案

东门胤
2023-03-14

你建议的是唯一可能的解决办法。也就是说,如果您筛选的值是一个数字,那么您可能可以通过使用排序集和zrank来获得一些性能优势。有了redis,keyspace组织就是游戏的名字。

 类似资料:
  • 问题内容: 我已经在这个问题中尝试过方法,但是由于我在集群模式下工作,因此它不起作用,redis告诉我: (错误)CROSSSLOT请求中的键未哈希到同一插槽 问题答案: 该问题的答案尝试在一个中删除多个键。但是,与给定模式匹配的键可能不会位于同一插槽中,并且如果这些键不属于同一插槽,则Redis Cluster不支持多键命令。这就是为什么您收到错误消息。 为了解决此问题,您需要一对一地使用以下密

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

  • 问题内容: 在我的Redis DB中,我有很多哈希值。 有时我想从原子上清除它们。我如何在不使用某些分布式锁定机制的情况下做到这一点? 问题答案: 从redis 2.6.0开始,您可以运行自动执行的lua脚本。我从来没有写过,但是我认为它看起来像这样 警告 :如Redis文档所述,由于性能问题,该 命令不应用于生产中的常规操作,该命令旨在用于调试和特殊操作。阅读更多 请参阅EVAL文档。

  • 我读了很多帖子提到删除匹配模式的键。我想删除与特定模式不匹配的键。

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

  • 问题内容: 我试图找出存储在与redis模式匹配的键列表中的值。我尝试使用,以便以后可以用来获取所有值,问题是: 不返回任何值,而 返回所需的键。我如何强制浏览所有现有键?我需要为此研究lua吗? 问题答案: 使用下面的代码,您将从光标0扫描1000个第一个对象 结果,您将获得一个新的光标以进行调用 扫描1000个下一个对象。然后,当您从1000增加到10000并检索数据时,您将扫描更多键,然后再