> 技术文档 > 第四章.Redis渐进式遍历_redis scan的顺序

第四章.Redis渐进式遍历_redis scan的顺序

        

目录

scan 命令渐进式遍历

SCAN


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

scan 命令渐进式遍历

  • ⾸次 scan 从 0 开始.
  • 当 scan 返回的下次位置为 0 时, 遍历结束.

SCAN

以渐进式的⽅式进⾏键的遍历。

语法:

SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

命令有效版本:2.8.0 之后

时间复杂度:O(1)

返回值:下⼀次 scan 的游标(cursor)以及本次得到的键。

⽰例:

        除了 scan 以外,Redis ⾯向哈希类型、集合类型、有序集合类型分别提供了 hscan、sscan、zscan 命令,它们的⽤法和 scan 基本类似,感兴趣的读者可以⾃⾏做扩展学习。

        渐进性遍历 scan 虽然解决了阻塞的问题,但如果在遍历期间键有所变化(增加、修改、删除),可能导致遍历时键的重复遍历或者遗漏,这点务必在实际开发中考虑。