Redis scan

scan 比 keys 高级一些,2.8版本之后加入

scan的第一个参数是 游标值,第二个参数是 正则,第三个参数是 limit

scan 会返回一个数组,0 位置是 下一个游标值,1 位置是 结果集数组

下面这个例子中 一共有5个元素,scan返回0 时代表没有新游标了,scan 0 表示开启一个新会话

scan 0 count 2 只返回了2个元素,并且提示了下一个游标值是6

使用6再次scan,返回了后续的3个元素

为什么count 2 却返回了3个元素?数据量太小的情况下,count有可能会失效,这是一个scan的痛点

如果你尝试 从 10000条记录中,分两次各取5000,你会发现scan的 count 照样不靠谱

第一次 5002
第二次 4998

Send a Message