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

Redis渐进式遍历数据库

目录

渐进式遍历

数据库


渐进式遍历

keys*可以一次性的把整个redis中所有key都获取到,这个操作是非常危险的,因为可能一下获取到太多的key,阻塞redis服务器。要想很好的获取到所有的key,又不想出现卡死的情况,就可以使用渐进式遍历。

渐进式遍历:不是一个命令把所有的key全都拿到,而是每执行一次命令,只获取到其中一小部分,这样的话保证当前的这一次操作不会太卡,要想得到所有的key就需要多次遍历了。

渐进式遍历其实是一组命令,但是这一组命令的使用方法是一样的,其中代表性命令是scan

scan语法:

SCAN cursor [MATCH pattern] [Count count] [Type type]

cursor:光标指向遍历的位置,如果设置为0,意味着这次遍历是从头开始获取。cursor不能理解为下标,它不是一个连续递增的整数,它就是一个"字符串",redis服务器知道这个光标对应的元素位置,而我们是不知道的。

MATCH pattern:它和前面介绍过的keys命令是一样的,是通配符匹配。

count:限制这一次遍历能够获取多少个key,默认是10。此处的count只是一个建议,写入的count和实际返回key的个数不一定完全相同,但不会差很多。

type:redis里的key都是string,但value的类型不一样。通过这个选项可以指定这一次遍历只获取哪种类型的key。

返回值:前半部分是告诉你,下次继续遍历,光标要从哪里开始,后面全是本次获取到的key。

案例:

当本次遍历的时候给的下一次光标是0,表示遍历完毕了。

携带count 

这里的渐进式遍历,在遍历过程中,不会在服务器这边存储任何的状态信息,此处的遍历是随时可以终止的,不会对服务器产生任何副作用。

渐进式遍历虽然解决了阻塞的问题,但是如果在遍历期间key有所变化(增加、修改、删除),可能会导致遍历时键的重复遍历或者遗漏,也就是说不要一边遍历,一边修改。

数据库

mysql中有一个重要的概念,databases,一个mysql服务器上可以有很多个database,一个database上可以有很多个表。

其实redis也是有database这样的概念的,只不过不像mysql那样随意。redis中的database是现成的,不能创建新的数据库也不能删除已有的数据库,默认redis提供了16个数据库(0-15),这16个数据库中的数据是隔离的(互相之间不会有影响)。默认情况下使用的是0号数据库。

select 

select可以用来切换数据库,后面跟上数据库的下标就行。

一共只有16个数据库,下标就是0-15,因此如果超出15会报错的。

dbsize

获取到当前数据库中key的个数 。

flushdb

删除当前数据库中所有的key。

语法:

flushdb [async | sync]

async:异步

sync:同步 

 这个命令不常用,了解即可,删除所有的key还是flushall更常用。

flushall

删除所有数据库中的key。 

这个命令慎用。

前面学习的主要是各种redis的基本操作/命令。都是在redis命令行客户端手动执行的,这种操作方式并不是日常开发中主要的形式,更多的时候是使用redis的API,来实现定制化的redis客户端程序,进一步操作redis服务器。

相关文章:

  • Mybatis中的分页操作,如何使用PageHelper进行分页,以及Spring Boot整合Mybatis Plus分页
  • Flink深入浅出之02:编程模型、数据源、算子、connector
  • 单片机中的基础外设GPIO的知识和应用—(6)
  • 门面设计模式和适配器模式有什么区别
  • 接口测试之curl命令详解
  • 自注意力机制的演进-从Transformer架构到DeepSeek-R1模型的深度语义理解革新
  • 双足机器狗开发:Rider - Pi
  • Wireshark的OSPF报文抓包和分析(单区域ospf实验)
  • 写一写idea中使用tomcat启动activiti过程
  • docker目录挂载与卷映射的区别
  • C语言学习笔记(week2)2-24 3-2
  • 【音视频】ffplay播放控制
  • LangChain教程 - Agent - 支持 9 种 ReAct 交互
  • 数字逻辑与FPGA实现基础
  • k-Shape:高效准确的聚类方法
  • VPC2-多域攻击-tomcat渗透-通达oa-域控提权-密码喷射-委派攻击-数据库提权
  • 人工智能 模型中D*算法的逻辑
  • 云存储的安全性之代理IP如何确保文件不被未授权访问
  • 杨校老师课堂之零基础入门C++备战信息学奥赛-基础篇
  • C++入门——命名空间
  • 中国制造网是干什么的/江苏seo技术教程
  • 响应式网站 图片处理/新闻热点大事件
  • 网站三要/百度站长收录提交入口
  • 中国做的最好的网站/seo视频
  • 酒庄企业网站/搜狗seo优化
  • 建立平台网站要多久/百度怎么收录自己的网站