当前位置: 首页 > 面试题库 >

Redis扫描返回空结果,但游标非零

姜俊民
2023-03-14
问题内容

我有一个具有数百万个密钥的redis数据库。有时候,我需要通过模式如查询键2016-04-28:*为我用scan。初次致电应该是

scan 0 match 2016-04-28:*

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

但是,如果我运行查询并且没有匹配的键,则scan仍然返回非零游标,但是键集为空。这种情况一直发生在每个后续查询中,因此搜索似乎不会在很长时间内结束。

Redis文档说

SCAN系列功能不保证每次调用返回的元素数在给定范围内。 还允许命令返回零个元素,并且只要返回的游标不为零,客户端就不应认为迭代已完成。

因此,当我得到空键集时,我不能只是停下来。

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


问题答案:

您将始终需要完成扫描(即获取光标==
0),以确保没有匹配项。但是,您可以使用该COUNT选项来减少迭代次数。默认值10是fast如果这是您的匹配模式的常见情况-
每次空答复时都开始增加它(例如,double或2的幂,但以防万一,请设置一个最大上限),以使Redis难以“搜索”键。这样,您将节省网络往返,因此它应该“加快速度”。



 类似资料:
  • 空结果如下所示: 非空结果(所需结果)如下所示: 我有这个函数,它应该获取“. flac”文件并将其转换为文本。出于某种原因,只有这两个示例“. flac”文件在通过Google Speech API时返回字符串,其他flac文件返回EMPTY结果。这些人遇到的同样问题:链接 这是我所有的flac文件:链接 <代码>我的。flac和此\u is\u a\u测试。flac工作得很好,google语音

  • 我知道之前有人问过这个问题,但我还是希望有人能帮我。我使用meteorchef的基本模板。 从ScoreTotal.js在用户界面/容器目录我做: 在服务器/出版物中,我有: 当我console.log结果时,我看到聚合有效,但我得到错误“发布函数返回非光标数组” 感谢您的帮助!

  • 问题内容: 我正在使用JDBC来实现非常简单的数据库连接。 我已经创建了连接/语句并执行了查询。我在调试器中检查语句的查询对象,以确认它正在发送正确的查询。然后,我再次检查了数据库中的查询(直接从调试器复制),以确保其返回数据。但是,返回的结果集在.next()上给出false 这里有我遗漏的常见陷阱吗? 还有myDB类(一个简单的包装程序,使我可以将连接/语句代码放入任何项目中) 编辑:根据建议

  • 方法返回空结果。我正在尝试使用Spring-boot、h2数据库和JPA来实现rest服务。 下面是我的 我的文件包括: 实体: 接口:

  • 出现此问题后,总是进行扫描。 此问题将关闭设备上的蓝牙。或者退出应用程序就会解决。当我让程序运行12小时时,出现了此问题。 似乎很少出现此问题,但我不知道是什么引发了此问题。 有人能帮助我解决此问题吗? 下面列出了终端信息、源代码和日志。 箭头M03 Android OS 6.0 'org.altbeacon:Android-beacon-library:2.16.2' 主体活动

  • 问题内容: 我正在尝试与Laravel 一起使用Redis。我可以发出一个返回10个键的请求,但我希望循环直到所有键都返回。我不确定如何使用laravel进行此操作。目前我有 我不知道是否有一种“ laravel”的方式。 编辑: 我使用作曲家进行导入并与之合作 但是我想知道laravel的方式 编辑: var_dump的单 问题答案: 当Redis外观直接将命令传递给Predis(或您可能会说R