学生兼职网站开发,公司网站建设目标,怎样做网络推广优选豪升网络好,wordpress所有分类前言 keys 可以一次性把 Redis 中的所有 key 都获取到#xff0c;但这个操作比较危险#xff0c;一次性获取所有的key 很容易会导致 Redis 阻塞。 而通过渐进式遍历#xff08;不是一个命令就将所有的 key 值拿到#xff0c;而是每执行一次命令只获取其中的一小部分#x…前言 keys 可以一次性把 Redis 中的所有 key 都获取到但这个操作比较危险一次性获取所有的key 很容易会导致 Redis 阻塞。 而通过渐进式遍历不是一个命令就将所有的 key 值拿到而是每执行一次命令只获取其中的一小部分这样就能保证当前的操作不会太卡而想获得所有的 key 值就要重复执行多次命令就能做到在获取到所有 key 的同时也不会阻塞 Redis 服务器
SCAN
以渐进式的⽅式进⾏键的遍历
语法
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]时间复杂度O(1)
返回值下⼀次 scan 的游标cursor以及本次得到的键。 游标和下标是完全不一样的Redis 可以通过游标找到下次遍历对应的位置但游标的含义只有 Redis 知道程序员/客户端是不知道的
注意⾸次 scan 从 0 开始当 scan 返回的下次位置为 0 时,遍历结束
MATCH pattern 选项表示进行字符串匹配与 keys 作用相同 COUNT count 选项限制要获取多少个 key 注意此处的 count 和 MySQL 的 limit 不一样limit 是精确的获取一个区间内的数据而此处的 count 仅仅是对 Redis 的一个建议实际返回的个数和指定的 count 可能不一致但区别不会很大 TYPE type 选项限制键值对 value 的类型但Redis 版本较低可能没有该选项 注意 渐进性遍历 scan 虽然解决了阻塞的问题但如果在遍历期间键有所变化增加、修改、删 除可能导致遍历时键的重复遍历或者遗漏这点务必在实际开发中考虑实际上在很多地方都很忌惮一边遍历一边修改比如 Javac 等 除了 scan 以外Redis ⾯向哈希类型、集合类型、有序集合类型分别提供了 hscan、sscan、zscan 命 令它们的⽤法和 scan 基本类似感兴趣的读者可以⾃⾏做扩展学习。