当前位置: 首页 > news >正文

10.Redis 渐进式遍历

Redis 渐进式遍历

  • 渐进式遍历
    • scan

渐进式遍历

keys 命令一次性的把整个redis中所有的key都获取到,keys *但这个操作比较危险,可能会一下子得到太多的key,阻塞 redis 服务器。
通过渐进式遍历,就可以做到,既可以获取到所有的 key,同时又不会卡死服务器
不是一个命令,把所有的 key 都拿到,而是每执行一次命令,只获取到其中的一部分,这样的话就能保证当前这一次操作不会太卡。若要得到所有的 key 就需要多次遍历,即多次执行渐进式遍历命令。

  • SCAN:用于遍历集合中的所有元素,可以使用游标来分批获取结果。
  • ZSCAN:用于遍历有序集合中的所有元素,可以使用游标来分批获取结果。
  • HSCAN:用于遍历哈希表中的所有字段和值,可以使用游标来分批获取结果。
  • SSCAN:用于遍历集合中的所有元素,可以使用游标来分批获取结果。

由于其他的使用方法的都是相同的,下面只讲解 scan。

scan

语法:
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

  • cursor 不能理解成下标,不是一个 连续递增 的整数,其仅仅就是一个“字符串”,一开始将 cursor 设置成 0了,意味着这次遍历是从头开始获取的,其中如下图返回值 1) 旁边的数字就是告诉你,下次继续遍历时,光标要设置的值。
  • MATCH 指的就是通配符。
  • COUNT 限制这一次遍历能够获取到多少个元素,默认是10。此处的 count 只是给 redis 服务器一个 提示/建议。 写入的 count 和 实际返回的key的个数不一定是完全相同的,但是不会差很多,且每次遍历count的数字可以随便更改,每次遍历可以不同~
  • TYPE 指定只获取到 那种 value类型的 key

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

取出完整数据示例:

在这里插入图片描述
渐进性遍历 scan 虽然解决了阻塞的问题,但如果在遍历期间键有所变化(增加、修改、删除),可能导致遍历时键的重复遍历或者遗漏,这点务必在实际开发中考虑。相当于c++中的stl 的迭代器失效问题。

http://www.lryc.cn/news/149832.html

相关文章:

  • 字符函数和字符串函数(2)
  • 目录扫描+JS文件中提取URL和子域+403状态绕过+指纹识别(dirsearch_bypass403)
  • 【UE 材质】常用向量运算节点——点积、叉积、归一化
  • 音视频 ffmpeg命令提取PCM数据
  • 【MySQL】实现可扩展性:构建高性能的系统
  • 网站用户体验之深度感悟
  • 目标检测YOLO实战应用案例100讲-道路场景下目标检测与分割模型的压缩研究与实现
  • 基于MSP430 红外避障-遥控小车(电赛必备 附项目代码)
  • 大型商城系统功能逻辑架构_各大系统关系设计_OctShop
  • 飞书接入ChatGPT,实现智能化问答助手功能,提供高效的解答服务
  • linux并发服务器 —— 多线程并发(六)
  • Nginx 部署 配置
  • 数据结构:时间复杂度和空间复杂度计算
  • 云原生Kubernetes:二进制部署K8S单Master架构(一)
  • ICCV 2023 | 利用双重聚合的Transformer进行图像超分辨率
  • 经纬恒润预期功能安全(SOTIF)解决方案为自动驾驶安全保驾护航
  • java从入门到起飞(七)——面向对象
  • 题集-三路划分和三数取中(快排优化)
  • 设计模式-迭代器
  • Hive学习(12)Hive常用日期函数
  • PowerQuery动态加载M公式
  • 2分钟搭建FastGPT训练企业知识库AI助理(Docker部署)
  • TDengine函数大全-字符串函数
  • part-02 C++知识总结(类型转换)
  • stable diffusion实践操作-图生图
  • Jtti:Ubuntu18.04如何修改远程ssh端口号
  • 微软表示Visual Studio的IDE即日起开启“退休”倒计时
  • 好马配好鞍:Linux Kernel 4.12 正式发布
  • element——switch接口成功后赋值打开开关
  • WPF Border设置渐变色