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

Redis学习-06渐进式遍历

什么是渐进式遍历

一种处理数据的机制,是指通过多次命令,每次命令只获取到一部分,进而解决直接使用 keys 获取键时可能出现的阻塞问题

语法

SCAN cursor [MATCH pattern] [COUNT count]
  • cursor:游标,初始为 0,后续使用上次返回的游标值继续迭代
  • MATCH pattern(可选):键名匹配模式(如 user:*)
  • COUNT count(可选):每次迭代返回的键数量(默认值为 10,仅作参考,不保证准确)

COUNT count 返回的数量是一个大概的,比如 scan 0 count 3 返回的数量可能4个也可能是3个

返回值:

类似如下格式:

SCAN 0 
1) "13"  # 下次迭代的游标
2) 1) "key1"2) "key2"...
注意:

返回的游标值为 0 时,表示迭代结束

模拟使用:

存在下面11个键值对:
在这里插入图片描述

scan 0:

返回了全部11个键
在这里插入图片描述

sacn 0 count 5

返回了 预期5个左右的键
在这里插入图片描述

使用上次遍历返回的游标值6 scan 6 count 5

返回了 预期5个左右的键
在这里插入图片描述
同时返回游标值0,遍历完毕

补充

Redis 渐进式遍历命令

除了 SCAN 以外,Redis 面向哈希类型、集合类型、有序集合类型分别提供了 HSCANSSCANZSCAN 命令,它们的用法和 SCAN 基本类似。

HSCAN key cursor [MATCH pattern] [COUNT count]  # 迭代哈希表中的字段和值
SSCAN key cursor [MATCH pattern] [COUNT count]  # 迭代集合中的成员
ZSCAN key cursor [MATCH pattern] [COUNT count]  # 迭代有序集合中的成员和分数
注意:
  • 渐进性遍历 SCAN 解决了阻塞的问题,但是在遍历期间键如果发生变化比如增加、修改、删除,可能导致重复遍历或者遗漏的问题,这点要注意
http://www.dtcms.com/a/290020.html

相关文章:

  • Jmeter工作界面介绍
  • Three.js实现银河流光粒子星空特效原理与实践
  • 图论基本算法
  • 【前端】corepack包管理器版本管理工具的介绍与使用
  • Spring Boot 3企业级架构设计:从模块化到高并发实战,9轮技术博弈(含架构演进解析)
  • 在安卓源码中添加自定义jar包
  • 【unitrix】 6.11 二进制数字标准化模块(normalize.rs)
  • vue-pinia
  • 基于WebSocket的安卓眼镜视频流GPU硬解码与OpenCV目标追踪系统实现
  • Vue 脚手架——render函数
  • Django模板系统
  • OpenAI无向量化RAG架构:大模型落地的颠覆性突破
  • 【浓缩版】蓝牙开发概览
  • 板凳-------Mysql cookbook学习 (十二--------3_1)
  • 【Linux】Prometheus 监控 Kafka 集群
  • Spring MVC 核心工作流程
  • 车载电子电器架构 --- MCU信息安全相关措施
  • docker 软件bug 误导他人 笔记
  • JSX(JavaScript XML)‌简介
  • 力扣15:三数之和
  • 【洛谷】The Blocks Problem、合并两个有序数组,补充pair(vector相关算法题p2)
  • 闲庭信步使用图像验证平台加速FPGA的开发:第二十八课——图像膨胀的FPGA实现
  • “融合进化,智领未来”电科金仓引领数字化转型新纪元
  • Flutter和Kotlin的对比
  • 【用unity实现100个游戏之34】使用环状(车轮)碰撞器(Wheel Collider)从零实现一个汽车车辆物理控制系统,实现一个赛车游戏
  • kotlin和Jetpack Compose对于Android系统来说是什么关系?
  • Python 进阶(七):XML 基本操作
  • opencv无法读取视频
  • Python100个库分享第38个—lxml(爬虫篇)
  • Navicat 17.3 正式发布 | 现已支持达梦、金仓和 IvorySQL 数据库