关于redis scan 游标的问题

来源:4-3 从海量数据里查询某一固定前缀的key

坐看落花

2020-04-27

  1. key的存储应该是hash 这种方式, 才能使得get key的时间复杂度为O(1), 那 游标表示什么意思呢, 是key在hashMap中位置吗?
  2. 为什么返回的游标会比上次小呢, 依次向后的话应该是递增的, 如果返回游标可能比输入游标小的话, 那返回游标为0也可能还能继续轮询. 还是说0只是一种结束标识
写回答

1回答

翔仔

2020-04-28

同学好,

  1. redis底层使用得是hashmap这种结构(数组(bucket)+链表),所以游标的意思是数组里面即buket的位置;

  2. 它是这样去访问的,同学可以转换成二进制,类似这样子

    00->10->01->11

    主要做主要是为了尽可能避免hashmap扩容的时候的重复遍历。0是一种结束标识

0
1
坐看落花
关于第二点没能理解, 不过也找到相应的解释了, 这个需要仔细读一下, 非常感谢老师的解答
2020-04-28
共1条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程