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

Redis - 渐进式遍历

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

图2-29scan命令渐进式遍历

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

SCAN

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

语法:

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

命令有效版本:2.8.0之后

时间复杂度:O(1)

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

⽰例:

 redis 127.0.0.1:6379> scan 0
 1) "17"
 2)  1) "key:12"
     2) "key:8"
     3) "key:4"
     4) "key:14"
     5) "key:16"
     6) "key:17"
     7) "key:15"
     8) "key:10"
     9) "key:3"
     10) "key:7"
     11) "key:1"
 redis 127.0.0.1:6379> scan 17
 1) "0"
 2) 1) "key:5"
     2) "key:18"
     3) "key:0"
     4) "key:2"
     5) "key:19"
     6) "key:13"
     7) "key:6"
     8) "key:9"
     9) "key:11"

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

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


http://www.kler.cn/a/384377.html

相关文章:

  • 【数学二】线性代数-向量-向量组的秩、矩阵得秩
  • 交换机属性-持久化和自动删除等
  • 【Spring】Spring Web MVC基础入门~(含大量例子)
  • Mac解决 zsh: command not found: ll
  • 内部知识库:优化企业培训流程的关键驱动力
  • SpringSecurity6+OAuth2.0 从入门到熟练使用
  • 03-Dubbo的负载均衡及高性能RPC调用
  • Kafka 源码 KRaft 模式本地运行
  • 读取json文件并解析
  • 【taro react】 ---- 常用自定义 React Hooks 的实现【六】之类渐入动画效果的轮播
  • 初学者指南:用例图——开启您的软件工程之旅
  • 完整版Java类型
  • LInux基础 (一):Linux 系统重要命令拾遗
  • 在本地运行大模型:以Ollama为例
  • 2024最新版JavaScript逆向爬虫教程-------基础篇之Chrome开发者工具学习
  • 架构师:如何提高web网站的请求并发响应量?
  • Python中pandas组件学习总结
  • 【Linux】进程间通信(匿/命名管道、共享内存、消息队列、信号量)
  • 【go从零单排】实现枚举类型(Enum)
  • PyCharm中 argparse 库 的使用方法
  • jenkins流水线pipeline
  • Netty篇(学习前言)
  • mysql常见的一些配置项
  • C#-拓展方法
  • iOS开发 swift系列---一个视图数据修改后,如何刷新另外一个视图
  • 多机器人图优化:2024ICARA开源