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

2024.1.3 关于 Redis 渐进式遍历 和 数据库管理命令

目录

引言

渐进式遍历 

SCAN 命令

 数据库管理命令

切换数据库

获取数据库 key 个数 

删除数据库所有 key

同步删除 SYNC

异步删除 ASYNC


阅读下述文章之前建议点击下方链接熟悉 keys 命令的用法和特点

Redis 全局通用命令


​​​渐进式遍历 

  • keys * 命令
  • 一次性将 Redis 中所有的 key 都获取到

注意:

  • 执行该命令 十分危险,可能会导致一下子得到太多 key,从而阻塞 Redis 服务器

  • 相较于 keys * 命令
  • 渐进式遍历,可以做到获取到所有的 key 的同时又不会阻塞 服务器

通俗理解:

  • 不是通过一个命令,便将所有的 key 都获取到
  • 而是每执行一次命令,便获取到其中的一小部分 key,以此保证当前这次操作不会阻塞 Redis 服务器
  • 要想得到所有的 key ,仅多执行几次渐进式遍历命令来遍历 Redis 中的 key 即可
  • 类似于 化整为零 的思想

SCAN 命令

  • 渐进式遍历的代表命令

语法:

scan cursor [MATCH pattern] [COUNT count] [TYPE type]
  • cursor 代表光标,而 光标便指向了当前遍历的位置

注意:

  • 此处的 cursor 不能理解成 下标
  • cursor 并不是一个连续递增的整数,仅仅只是一个字符串
  • 程序员 和 Redis 客户端是不认识光标(cursor)这个概念的
  • 只有 Redis 服务器知道光标(cursor)值 所对应的元素位置
  • 我们要做的只能是将返回的光标(cursor)值写入到下次遍历的 scan 命令中,从而获取下次需遍历到的 key

可选项解释

  • [MATCH pattern] 和前面介绍过的 keys 命令中的 pattern 是一样的 
  • pattern 为包含特殊符号的字符串,其存在的意义是去描述 另外的字符串长啥样的
? 匹配任意一个字符
匹配 0 个或者多个任意字符
[ab] 只能匹配到 a b ,别的都不行 相当于给出固定的选项
[^ae] 只有 a、e 匹配不了 其他的都能匹配
[a-e] 匹配 a - e 这个范围内的字符 包含两侧边界

  • [COUNT count] 用来限制这一次遍历能获取到的元素个数,默认为 10 个

注意:

  • 此处的 count 与 MySQL 中的 limit 不同
  • 首先此处的 count 值只能对 Redis 服务器起到一个 "提示" 或 "建议" 的效果,并不代表 Redis 服务器只能返回 count 个 key
  • 即填写的 count 值 和 实际返回的 key 的个数不一定完全相同,但是也不会差很多!
  • 但对于 MySQL 中的 limit 来说,其给出的值是多少,则该 sql 语句便十分精确地返回多少行数据

  • Redis 中的 key 均为 String 类型,但是 value 却有很多种不同的类型
  • [TYPE type] 可利用该选项来控制返回 key 的 value 类型

实例理解

  • 限制一次遍历仅能获取 3个元素


注意点一:

  • 渐进式遍历,在遍历过程中,Redis 服务器不保留任何状态信息
  • 所以此处的遍历 是可以随时进行终止的,因为其不会对 Redis 服务器产生任何影响

注意点二:

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

 数据库管理命令

  • MySQL 中有一个重要的概念 ——> database(数据库)
  • 一个 MySQL 服务器上可以有很多个 database,一个 database 上可以有很多个 table
  • MySQL 上可以随心所欲的 创建、删除 database 和 table

  • Redis 中也有 database 的概念,只不过不像 MySQL 那样随意
  • Redis 中的 database 均是现成的,即用户不能创建新的数据库,也不能删除已有的数据库
  • Redis 默认给我们提供了 16 个数据库,编号为 0-15
  • 这 16 个数据库之间具有隔离性,即这些数据库不会相互影响
  • 默认情况下使用的数据库就是 0号数据库

切换数据库

  • 使用下方命令来切换数据库
select dbIndex

注意:

  • 在实际 Redis 的使用中很少会关注到数据库,一般都是默认使用 0号数据库

实例理解


获取数据库 key 个数 

  • 使用下方命令来获取到当前数据库中 key 的个数
dbsize

实例理解


删除数据库所有 key

  • 使用下方命令来删除 当前数据库 或 全部数据库 的所有 key
FLUSHDB [ASYNC | SYNC] 删除当前数据库中的所有 keyFLUSHALL [ASYNC | SYNC] 删除全部数据库中的所有 key
  • 选项 [ASYNC | SYNC] 为 [异步 | 同步] 的意思

同步删除 SYNC

  • Redis 会在删除数据前,先将数据同步到磁盘上的持久化文件(如 RDB文件)
  • 这意味着在命令执行完成后,你可以确保数据已经被持久化到磁盘上
  • 即使 Redis 服务在之后重启,也能够从磁盘上的数据文件中恢复数据

优点:

  • 数据持久性高

缺点:

  • 会引起一定的性能开销,因为要等待数据写入磁盘

异步删除 ASYNC

  • Redis 会在后台异步删除数据,而不等待数据同步到磁盘上
  • 这意味着在命令执行完成后,数据可能还没有被持久化到磁盘上
  • 这样的操作通常会更快,因为不需要等待磁盘写入的完成

优点:

  • 性能开销小

缺点:

  • 在极端情况下,如果 Redis 在执行异步删除后崩溃,可能会丢失最后一次清空的数据

总结:

  • 异步删除主要关注于提高执行 FLUSHDB 命令的执行速度,即不会引入等待磁盘写入的性能开销
  • 它不会立即将所有数据写入磁盘,而是通过异步的方式在后台完成这个过程
  • 这也是为什么在异步删除的情况下,可以更快地执行清空数据库的操作

实例理解

  • 使用 FLUSHDB 命令

  • 使用 FLUSHALL 命令

相关文章:

2024.1.3 关于 Redis 渐进式遍历 和 数据库管理命令

目录 引言 渐进式遍历 SCAN 命令 数据库管理命令 切换数据库 获取数据库 key 个数 删除数据库所有 key 同步删除 SYNC 异步删除 ASYNC 阅读下述文章之前建议点击下方链接熟悉 keys 命令的用法和特点 Redis 全局通用命令 ​​​渐进式遍历 keys * 命令一次性将 Redi…...

并发编程:线程同步基础:5、读写锁。ReentrantReadWriteLock

1、主要方法 .readLock().lock();获取读锁 读锁之间互不干扰。 .writeLock().lock();获取写锁 写锁可以锁定住读锁和其他写操作。 2、主程序 package xyz.jangle.thread.test.n2_5.rwlock;import java.util.concurrent.TimeUnit;/*** * 读写锁。ReentrantReadWriteLock* a…...

SpringBoot 集成 Kafka消息中间件,Docker安装Kafka环境

前述 提供kafka、zooker在docker环境下进行安装的示例,springBoot集成kafka实现producer-生产者和consumer-消费者(监听消费:single模式和batch模式)的功能实现 环境安装 # 拉取镜像 docker pull wurstmeister/zookeeper docker pull wurstmeister/kafka# 运行zooker docker …...

阿里云Alibaba Cloud Linux 3镜像版本大全特性说明

Alibaba Cloud Linux阿里云打造的Linux服务器操作系统发行版,Alibaba Cloud Linux完全兼容完全兼容CentOS/RHEL生态和操作方式,目前已经推出Alibaba Cloud Linux 3,阿里云百科aliyunbaike.com分享Alibaba Cloud Linux 3版本特性说明&#xff…...

基于SSM的滁艺咖啡在线销售系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...

【设计模式之美】理论一:怎么才算是单一原则、如何取舍单一原则

文章目录 一. 如何判断类的职责是否足够单一?二. 类的职责是否设计得越单一越好? 开始学习一些经典的设计原则,其中包括,SOLID、KISS、YAGNI、DRY、LOD 等。 本文主要学习单一职责原则的相关内容。 单一职责原则的定义&#xff1a…...

MYSQL 深入探索系列六 SQL执行计划

概述 好久不见了,近期一直在忙项目的事,才有时间写博客,近期频繁出现sql问题,今天正好不忙咱们看看千万级别的表到底该如何优化sql。 案例 近期有个小伙伴生产环境收到了告警,有个6千万的日志表,查询耗时大…...

安装jupyter notebook,jupyter notebook的简单使用

借助anaconda安装jupyter notebook,先下载anaconda然后在Anaconda Prompt中输入命令: 输入"jupyter notebook",在默认浏览器中打开jupyter notebook。 输入"jupyter notebook --no-browser",启动服务器,但不打…...

宏集PC Runtime软件助推食品行业生产线数字化革新

一、前言 近年来,中国食品行业发展迅速且灵活多变,在当前经济下行的情形下,食品行业正面临着日益激烈的竞争,导致企业利润下降。 为了保持企业市场竞争力,国内某top10食品企业采用宏集SCADA解决方案—PC Runtime软件…...

python的课后练习总结3之条件语句

1,简单点,只有IF IF 后面加入条件然后冒号: 条件成立执行的代码1 条件成立执行的代码2 条件是否成立都执行的代码 身高 float(input(请输入你的身高(米):)) if 身高 > 1.3:print(f您的身高是{身高}米,请您买票) print(祝您旅途愉快) 2,IF 加个else if 条件:…...

RedisTemplate序列化

SpringBoot整合Redis,配置RedisTemplate序列化。如果使用StringRedisTemplate,那么不需要配置序列化,但是StringRedisTemplate只能存储简单的String类型数据,如图: 如果使用StringRedisTemplate存储一个常规对象&#…...

小米SU7汽车发布会; 齐碳科技C+轮融资;网易 1 月 3 日发布子曰教育大模型;百度文心一言用户数已突破 1 亿

投融资 • 3200 家 VC 投资的创业公司破产,那个投 PLG 的 VC 宣布暂停投资了• 云天励飞参与 AI 技术与解决方案提供商智慧互通 Pre-IPO 轮融资• 百度投资 AIGC 公司必优科技• MicroLED量测公司点莘技术获数千万级融资• 智慧互通获AI上市公司云天励飞Pre-IPO轮战…...

Python----matplotlib库

目录 plt库的字体: plt的操作绘图函数: plt.figure(figsizeNone, facecolorNone): plt.subplot(nrows, ncols, plot_number): plt.axes(rect): plt.subplots_adjust(): plt的读取和显示相关函数: plt库的基础图…...

PostgreSQL荣获DB-Engines 2023年度数据库

数据库流行度排名网站 DB-Engines 2024 年 1 月 2 日发布文章宣称,PostgreSQL 荣获 2023 年度数据库管理系统称号。 PostgreSQL 在过去一年中获得了比其他 417 个产品更多的流行度增长,因此获得了 2023 年度 DBMS。 DB-Engines 通过计算每种数据库 2024 …...

【每天五道题,轻松公务员】Day3:太阳常识

目录 专栏了解 ☞欢迎订阅☜ ★专栏亮点★ ◇专栏作者◇ 太阳常识 题目一 题目二 题目三 题目四 题目五 答案 补充扩展 专栏了解 ☞欢迎订阅☜ 欢迎订阅此专栏:考公务员,必订!https://blog.csdn.net/m0_73787047/category_1254…...

基于metersphere和supper-jacoco 测试覆盖率落地实践

一、背景及目标 背景 1、技术研发流程为测试 提供冒烟用例-开发根据用例自测-提测-开始测试,这一套流程,但是中间开发是否真实执行冒烟,测试并不知晓,而且测试提供冒烟用例是否符合标准也没法进行量化 2、公司产品属于saas产品&…...

LeetCode每周五题_2024/01/01~2024/01/05

文章目录 1599. 经营摩天轮的最大利润 [2024/01/01]题目题解 466. 统计重复个数 [2024/01/02]题目题解 2487. 从链表中移除节点 [2024/01/03]题目题解 1599. 经营摩天轮的最大利润 [2024/01/01] 题目 1599. 经营摩天轮的最大利润 你正在经营一座摩天轮,该摩天轮共…...

【华为OD机试真题2023CD卷 JAVAJS】抢7游戏

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 抢7游戏 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: A、B两个人玩抢7游戏,游戏规则为A先报一个起始数字X(10<起始数字<10000),B报下一个数字Y(X-Y<3),A再报一个数字Z(Y-Z<3),以此类推,直…...

14.7-时序反馈移位寄存器建模

时序反馈移位寄存器建模 1&#xff0c;阻塞赋值实现的LFSR&#xff0c;实际上并不具有LFSR功能1.1.1&#xff0c;RTL设计&#xff0c;阻塞赋值1.1.2&#xff0c;tb测试代码1.1.3&#xff0c;波形仿真输出&#xff0c;SIM输出&#xff0c;没实现LFSR1.2.1&#xff0c;RTL设计&am…...

【设计模式】二十一.行为型模式之状态模式

状态模式 一. 说明 状态模式通常描述一个类不同行为的多个状态变更&#xff0c;对象的行为依赖它的状态&#xff0c;它是一种行为型模式。 状态模式可以用来消除代码中大量的if-else结构&#xff0c;它明确对象是有状态的、对象的不同状态对应的行为不一样、行为之间是可以切…...

微服务实战系列之Dubbo(下)

前言 眼看着2023即将走远&#xff0c;心里想着似乎还有啥&#xff0c;需要再跟各位盆友叨叨。这不说曹操&#xff0c;曹操就来了。趁着上一篇Dubbo博文的余温尚在&#xff0c;博主兴匆匆地“赶制”了Dubbo的下集&#xff0c;以飨读者。 上一篇博主依然从Dubbo的内核出发&#…...

《剑指offer》数学第二题:求1+2+3+...+n

题目描述&#xff1a; 求123...n&#xff0c;要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句&#xff08;A?B:C&#xff09;。思路&#xff1a; 我们可以用递归和短路运算符来进行运算&#xff0c;具体代码如下。 代码实现&#xff1a; pac…...

阿里云服务器3M固定带宽速度快吗?

阿里云服务器3M固定带宽是什么意思&#xff1f;速度快吗&#xff1f;3M固定带宽是指云服务器的公网带宽&#xff0c;用于在外网提供服务的&#xff0c;3M带宽的下载速度是384KB/秒&#xff0c;上传速度是1280KB/秒&#xff0c;对于个人博客或流量不多的企业官网速度还是挺快的&…...

美易官方:新年伊始美企狂发450多亿美元债券

新年伊始&#xff0c;美国企业疯狂发行了价值超过450亿美元的债券&#xff0c;创下了历史新高。这一数字比去年同期增长了约50%&#xff0c;凸显出美国企业在全球经济增长放缓的背景下&#xff0c;依然保持着强劲的融资需求和信心。美国企业借款人周三将发行近160亿美元高评级债…...

[云原生] Go web工作流程

web工作流程 Web服务器的工作原理可以简单地归纳为 客户机通过TCP/IP协议建立到服务器的TCP连接客户端向服务器发送HTTP协议请求包&#xff0c;请求服务器里的资源文档服务器向客户机发送HTTP协议应答包&#xff0c;如果请求的资源包含有动态语言的内容&#xff0c;那么服务器…...

【PostgreSQL】约束-主键

【PostgreSQL】约束链接 检查 唯一 主键 外键 排他 主键 主键&#xff08;Primary Key&#xff09;是数据库表中用于唯一标识每一行记录的字段。主键具有以下特点&#xff1a; 唯一性&#xff1a;每个主键值在表中是唯一的&#xff0c;不允许出现重复值。非空性&#xff1a…...

IDEA 控制台中文乱码问题解决方法(UTF-8 编码)

设置 IDEA 编码格式 1&#xff1a;打开 IntelliJ IDEA>File>Setting>Editor>File Encodings&#xff0c;将 Global Encoding、Project Encoding、Default encodeing for properties files 这三项都设置成 UTF-8 2&#xff1a;将 vm option 参数改为&#xff1a; -…...

ssm基于BS的仓库在线管理系统的设计与实现论文

摘 要 如今的时代&#xff0c;是有史以来最好的时代&#xff0c;随着计算机的发展到现在的移动终端的发展&#xff0c;国内目前信息技术已经在世界上遥遥领先&#xff0c;让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#x…...

鸿蒙HarmonyOs:为什么不支持热更新?

学习了一段时间的鸿蒙开发&#xff0c;发现鸿蒙开发还是比较简单的&#xff0c;今天突然心血来潮&#xff0c;研究了一下鸿蒙热更新&#xff0c;最终得出的结论是鸿蒙暂时不支持热更新。 鸿蒙app开发主要是利用的ArkTs语言&#xff0c;ArkTs又是基于TypeScript语言的&#xff0…...

修改 Ubuntu 的配置

目录 一、修改地址 1. 修改本机IP 二、修改网关 1. 查看网关地址 2. 设置默认网关 三、重启网络 1. 重启网络 2. 刷新网络 四、修改主机名 1. 查看主机名 2. 修改主机名 一、修改地址 1. 修改本机IP sudo ifconfig en…...

地坪漆东莞网站建设技术支持/辽宁网站建设

我们在有些开发时候可能会用到些头条的文章&#xff0c;&#xff0c;添加过程如下所示&#xff1a; 我们在前台遍历数据的时候可以这样&#xff0c; 然后在后台更新首页模版后在去看下首页&#xff0c;效果如下所示&#xff1a; 转载于:https://www.cnblogs.com/leigood/p/5301…...

wordpress bbs插件/游戏合作渠道

文丨安迪斯晨风有一些生僻字&#xff0c;一眼看上去觉得和常用字没区别&#xff0c;不过等你揉揉眼睛仔细看就会发现它们像是“缺胳膊少腿儿”一样。作为一个强迫症患者&#xff0c;宝宝总想拿起笔给它添上一丢丢。下面就让我们来认识一下这些字吧&#xff01;首先出场的是“戓…...

卓越科技建站无锡做网站/制作链接的app的软件

常用命令 lsoflsof&#xff0c;它对应于“list open files”&#xff08;列出打开的文件&#xff09; fuserfuser 命令列示了本地进程的进程号&#xff0c;那些本地进程使用 File 参数指定的本地或远程文件。对于阻塞特别设备&#xff0c;此命令列示了使用该设备上任何文件的进…...

广州建设局网站首页/360站长平台链接提交

python3 操作excel 更多干货 分布式实战&#xff08;干货&#xff09;spring cloud 实战&#xff08;干货&#xff09;mybatis 实战&#xff08;干货&#xff09;spring boot 实战&#xff08;干货&#xff09;React 入门实战&#xff08;干货&#xff09;构建中小型互联网企业…...

湖南城市建设技术学院官方网站/广州网站优化页面

项目名称&#xff1a;信息技术手册查重错误比对分析 功能概述&#xff1a; &#xff08;1&#xff09; 数据导入&#xff1a;要求将提供的信息技术手册文档倒入数据库中 &#xff08;2&#xff09; 数据分类&#xff1a;将手册涉及的热词自动分类展示&#xff0c;将每个热词自动…...

聊城定制化网站建设/怎么创建网站链接

文章目录动态规划的三大步骤实例例1&#xff1a;简单的一维DP例2&#xff1a;不同路径例3&#xff1a;最小路径和例4&#xff1a;编辑距离优化例2不同路径数的优化例4编辑距离优化文章出处&#xff1a;告别动态规划&#xff0c;连刷 40 道题&#xff0c;我总结了这些套路&#…...