你知道为什么会这样吗?

localhost:0>scan 0 MATCH 20180223:c5*
 1)  "6553600"
 2)
localhost:0>scan 6553600 MATCH 20180223:c5*
 1)  "655360"
 2)    1)   "20180223:c5192875:o4998561"
  2)   "20180223:c1354879:o1160565"
  3)   "20180223:c1008709:o814395"
  4)   "20180223:c4485666:o4291352"
  5)   "20180223:c4560776:o4366462"
  6)   "20180223:c1646865:o1452551"
  7)   "20180223:c3515588:o3321274"
  8)   "20180223:c938489:o744175"
  9)   "20180223:c4895806:o4701492"
  10)   "20180223:c1767235:o1572921"

localhost:0>

看一下https://redis.io/commands/scan这个扫描命令看起来是对的,所以我不知道发生了什么。
有什么想法吗?

最佳答案

这不应该发生,而且我不能使用相同的键和debug populate 10000在本地(不稳定的分支)复制它。
我使用下面的lua脚本进行测试:

$ cat /tmp/lua
local cursor = 0
local rep = {}

repeat
  local r = redis.call('scan', cursor, 'match', '20180223:c5*')
  cursor = tonumber(r[1])
  for _, v in ipairs(r[2]) do
    table.insert(rep, v)
  end
until cursor == 0

return rep
$ redis-cli --eval /tmp/lua
1) "20180223:c5192875:o4998561"

关于redis - Redis SCAN命令返回与模式不匹配的键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48951550/

10-10 15:54