redis -如何从SCAN命令中获取密钥数量?

eblbsuwk  于 11个月前  发布在  Redis
关注(0)|答案(2)|浏览(162)

我试图计算匹配模式的键。我确实使用SCAN命令获得了返回的键。但我只想获得键的计数,而不是获得键数组。

SCAN 0 MATCH tick:klays:umc:*

字符串
我使用这个INCR来增加键tick:klays:umc:278,如下所示:

INCR tick:klays:umc:278
INCR tick:klays:umc:260
INCR tick:klays:umc:279

f3temu5u

f3temu5u1#

在互联网上的某个地方:
键与扫描
创建SCAN函数是为了打破KEYS命令的阻塞,这在生产环境中使用时可能会带来重大问题。许多Redis用户都非常清楚这种放缓对他们的生产工作负载的影响。KEYS命令和SCAN命令可以搜索所有匹配特定模式的键。
在你的场景中,似乎你想要匹配给定模式的键的计数。这意味着,你想要一次完成所有键。如果是这种情况,你必须使用KEYS命令而不是SCAN
因此,您可能希望在JavaScript中使用键并计算结果。

const keys = await client.keys('tick:klays:umc:*');
const count = keys.length; // 280

字符串
你还必须记住,KEYS是一个阻塞操作,如上所述。所以,要注意性能。如果键的数量可以保持增长,你可能需要在redis中为它们保留一个计数器。

iyr7buue

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

字符串
你必须做一些解析,但是值就在里面。

相关问题