我试图计算匹配模式的键。我确实使用SCAN命令获得了返回的键。但我只想获得键的计数,而不是获得键数组。
SCAN
SCAN 0 MATCH tick:klays:umc:*
字符串我使用这个INCR来增加键tick:klays:umc:278,如下所示:
INCR
tick:klays:umc:278
INCR tick:klays:umc:278 INCR tick:klays:umc:260 INCR tick:klays:umc:279
型
f3temu5u1#
在互联网上的某个地方:键与扫描创建SCAN函数是为了打破KEYS命令的阻塞,这在生产环境中使用时可能会带来重大问题。许多Redis用户都非常清楚这种放缓对他们的生产工作负载的影响。KEYS命令和SCAN命令可以搜索所有匹配特定模式的键。在你的场景中,似乎你想要匹配给定模式的键的计数。这意味着,你想要一次完成所有键。如果是这种情况,你必须使用KEYS命令而不是SCAN。因此,您可能希望在JavaScript中使用键并计算结果。
KEYS
const keys = await client.keys('tick:klays:umc:*'); const count = keys.length; // 280
字符串你还必须记住,KEYS是一个阻塞操作,如上所述。所以,要注意性能。如果键的数量可以保持增长,你可能需要在redis中为它们保留一个计数器。
iyr7buue2#
你可以使用INFO命令,它返回Redis上的统计信息,包括有多少个键:
> SET foo bar OK > SET bar baz OK > SET baz qux OK 127.0.0.1:6379> INFO KEYSPACE # Keyspace db0:keys=3,expires=0,avg_ttl=0
字符串你必须做一些解析,但是值就在里面。
2条答案
按热度按时间f3temu5u1#
在互联网上的某个地方:
键与扫描
创建SCAN函数是为了打破KEYS命令的阻塞,这在生产环境中使用时可能会带来重大问题。许多Redis用户都非常清楚这种放缓对他们的生产工作负载的影响。KEYS命令和SCAN命令可以搜索所有匹配特定模式的键。
在你的场景中,似乎你想要匹配给定模式的键的计数。这意味着,你想要一次完成所有键。如果是这种情况,你必须使用
KEYS
命令而不是SCAN
。因此,您可能希望在JavaScript中使用键并计算结果。
字符串
你还必须记住,
KEYS
是一个阻塞操作,如上所述。所以,要注意性能。如果键的数量可以保持增长,你可能需要在redis中为它们保留一个计数器。iyr7buue2#
你可以使用INFO命令,它返回Redis上的统计信息,包括有多少个键:
字符串
你必须做一些解析,但是值就在里面。