我正在使用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点?
答案 0 :(得分:2)
COUNT
的{{3}}含义是它暗示着在HSCAN
调用上需要做多少工作,并不是要返回的元素数量严格。
尽管SCAN不能保证每次迭代返回的元素数量,但可以使用COUNT选项根据经验调整SCAN的行为。基本上,用户使用COUNT来指定每次调用以从集合中检索元素时应完成的工作量。这只是实现的提示。
当迭代键空间或Set,Hash或Sorted Set足够大以由哈希表表示时,假设不使用MATCH选项, 服务器通常将返回计数或 。
答案 1 :(得分:2)