我保存了两种不同类型的密钥,一种以response
为前缀,另一种为uuid
。我想数一下以uuid
开头的键的数目。根据这个答案,可以使用MATCH
过滤密钥,但可以获得计数吗?
Redis中没有任何操作可以获取给定前缀的计数。这里有几个想法给你:
- 如果您只存储字符串,您可以使用哈希来跟踪所有内容,在这种情况下,您的UUID将是哈希中的字段,而不是字符串,但它们实际上是等效的。这将允许您使用HLEN命令来查看您有多少UUID。这将是一个有效的O(1(解决方案,并且具有不依赖单独计数器密钥的额外好处
- 保留一个uuid_coutner密钥,无论何时添加新的uuid,都只需使用INCR,如果删除了一个,则只需使用DECR。如果一次添加/删除1个以上,则可以使用INCRBY/DECRBY。这将是一个有效的O(1(解决方案,但当然,计数器/密钥是相互独立存储的
- 当然,你也可以使用你提到的帖子(扫描你所有的密钥(来计算它们,但这既是O(n(,也会产生大量不必要的流量