【问题标题】:redis scan returns empty results but nonzero cursorredis 扫描返回空结果但非零游标
【发布时间】:2016-08-23 10:36:50
【问题描述】:

我有一个包含几百万个键的 redis 数据库。有时我需要按模式查询键,例如2016-04-28:* 我使用 scan。第一次调用应该是

scan 0 match 2016-04-28:*

如果搜索完成,它将返回一堆键和下一个光标或 0。

但是,如果我运行查询并且没有匹配的键,scan 仍会返回非零光标,但会返回一组空键。每次连续查询都会发生这种情况,因此搜索似乎不会在很长一段时间内结束。

Redis 文档这么说

SCAN 系列函数不保证每次调用返回的元素数量在给定范围内。 命令也允许返回零元素,只要返回的游标不为零,客户端不应该认为迭代完成。

所以当我得到一组空键时,我不能停下来。

有什么方法可以加快速度吗?

【问题讨论】:

    标签: redis


    【解决方案1】:

    您始终需要完成扫描(即获取光标 == 0)以确保没有匹配项。但是,您可以使用COUNT option 来减少迭代次数。默认值为 10 很快键。通过这样做,您将节省网络往返次数,因此它应该“加快速度”。

    【讨论】:

      猜你喜欢
      • 2020-07-01
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多