Redis NoSQL Scan函数故障:无法获取ticker键但Keys可正常返回
Redis Scan无法找到ticker键但Keys可以的原因排查
以下是几种常见的原因及对应的排查方向:
Scan未完成循环迭代
Scan是分批返回键的,每次调用仅返回部分结果,必须持续调用直到游标返回0才会遍历完所有键。如果只执行了一次Scan,刚好ticker键不在当前返回的分片里,就会出现搜不到的情况。而KEYS是一次性遍历所有键,所以能直接返回结果。匹配模式不一致
检查Scan使用的MATCH参数是否和Keys命令的匹配规则一致:- 比如Keys用的是
KEYS ticker*,但Scan写成了SCAN 0 MATCH ticker(缺少通配符*); - Redis键名大小写敏感,若实际键是
Ticker,但Scan用了小写的ticker作为匹配模式,也会搜不到。
- 比如Keys用的是
COUNT参数设置过小
COUNT参数是Redis的提示性参数,用于告知Redis每次返回多少条结果(并非固定值)。如果键的总量很大,而COUNT设得太小,可能需要多次迭代才能扫到ticker键。可以尝试增大COUNT值(比如设为1000)后再执行Scan循环。数据库(DB)不匹配
Redis的不同数据库相互隔离,若执行KEYS命令时处于db0,但调用Scan时切换到了其他数据库(比如db1),自然找不到db0里的ticker键。可以用SELECT命令确认并切换到正确的数据库后再执行Scan。
内容的提问来源于stack exchange,提问作者han
相关产品推荐
相关产品推荐

