redis渐进式遍历

redis使用scan命令进行渐进式遍历键,进而解决直接使用keys获取键时可能出现的阻塞问题。每次使用scan命令的时间复杂度是O(1),但是要完整的完成所有键的遍历,需要执行多次scan命令。
scan命令渐进式遍历过程

scan

语法:scan cursor [match pattern] [count count] [type type]

  • cursor:光标,不是下标具体看上图
  • match:匹配规则,和keys命令一样
  • count:一次遍历大概获取到多少个元素,默认是10个

此处的count和mysql的limit不一样,limit是一个精确值,而count只是给redis服务器一个提示/建议,返回的key的个数不一定等于count,但是不会相差很多

  • type:选出和type类型相同

示例如下
redis渐进式遍历_第1张图片
redis5中没有type选项
redis渐进式遍历_第2张图片
scan的渐进式遍历,不会在redis服务器中存储任何状态信息,也就是说遍历可以随时终止,不会对服务器产生任何副作用。
:::danger
注意:渐进式遍历虽然解决了阻塞问题,但是如果在遍历期间键有所变化(增加,修改,删除),可能导致重复遍历或者遗漏键
:::

你可能感兴趣的:(redis,redis,数据库,缓存)