ruby-on-rails - 为什么redis返回更多的值而不是计数?
问题描述
我正在使用 Ruby on Rails 将密钥存储到 redis 中。我的哈希下有超过 20000 个键。我试图限制10,同时得到所有。但是redis返回11而不是10。为什么它返回11?
我的哈希,
127.0.0.1:6379> HLEN myhash
(integer) 14148
在下面的示例中,我查询 4 条记录,但返回 5 条对应的值,
127.0.0.1:6379> HSCAN my_hash 0 match * count 4
1) "896"
2) 1) "player 1"
2) "{\"id\":\"13192\",\"name\":\"Ram\"}"
3) "player 2"
4) "{\"id\":\"5429\",\"name\":\"Gopal\"}"
5) "player 3"
6) "{\"id\":\"2614\",\"name\":\"Venu\"}"
7) "player 4"
8) "{\"id\":\"9645\",\"name\":\"Sam\"}"
9) "player 5"
10) "{\"id\":\"2358\",\"name\":\"Rohit\"}"
为什么在这里得到5?
解决方案
记录在案的含义COUNT
是,它是关于在调用上要做多少工作的提示HSCAN
,它不是要返回的元素的严格数量。
虽然 SCAN 不保证每次迭代返回的元素数量,但可以使用 COUNT 选项凭经验调整 SCAN 的行为。基本上,用户使用 COUNT 指定每次调用时应完成的工作量,以便从集合中检索元素。这只是实施的提示......
当迭代键空间,或者一个足够大的可以用哈希表表示的 Set、Hash 或 Sorted Set 时,假设没有使用 MATCH 选项,服务器通常会返回 count 或比 count 元素多一点的调用。
推荐阅读
- excel - 填充光标未显示在excel中
- react-native - 将收藏夹图标呈现到平面列表
- kivy - 如何使用 on_enter 函数在第一个屏幕中更新 KivyMD 标签?
- python - 如何使用 Python/PySpark 解密 Oracle 数据?
- azure - 从 Google 服务帐户模拟 Azure 服务主体
- c# - 如何将 XML 数据加载到数据结构中?
- ruby - Bitbucket 管道不使用缓存进行捆绑安装
- powershell - Powershell 注册表访问多个选项
- azure-ad-b2c - Azure B2C 自定义策略 REST 调用中的错误处理
- python - 为什么 Python 打印语句会导致 UnicodeEncodeError?