Redis扫描返回空结果,但游标非零
我有一个具有数百万个密钥的redis数据库。有时候,我需要通过模式如查询键2016-04-28:*
为我用scan
。初次致电应该是
scan 0 match 2016-04-28:*
然后,它将返回一堆键和下一个光标;如果搜索完成,则返回0。
但是,如果我运行查询并且没有匹配的键,则scan
仍然返回非零游标,但是键集为空。这种情况一直发生在每个后续查询中,因此搜索似乎不会在很长时间内结束。
Redis文档说
SCAN系列功能不保证每次调用返回的元素数在给定范围内。
因此,当我得到空键集时,我不能只是停下来。
有什么办法可以加快速度吗?
回答:
您将始终需要完成扫描(即获取光标==
0),以确保没有匹配项。但是,您可以使用该COUNT
选项来减少迭代次数。默认值10是fast如果这是您的匹配模式的常见情况-
每次空答复时都开始增加它(例如,double或2的幂,但以防万一,请设置一个最大上限),以使Redis难以“搜索”键。这样,您将节省网络往返,因此它应该“加快速度”。
以上是 Redis扫描返回空结果,但游标非零 的全部内容, 来源链接: utcz.com/qa/418573.html