Redis4 渐进式遍历/自定义客户端/持久化

这篇具有很好参考价值的文章主要介绍了Redis4 渐进式遍历/自定义客户端/持久化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.渐进式遍历

1.keys *一次性把所有的key都获取到.但是存在一个问题,一旦数据过多,redis就会被阻塞住,就无暇顾及其他的命令,这样的影响很大.

2.那么就出现了渐进式遍历,可以做到既能获取所有的key,又不会阻塞服务器.渐进式不是一个命令把所有的key获取到,而是没执行一次命令只获取其中的一部分,这样保证当前一次操作不会数据过多导致redis阻塞.

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

cursor:为上次遍历到哪里,输入0表示为最前面开始遍历,在客户端看来是无意义的

count:遍历的建议次数,默认为10

pattern:匹配模式

type:key类型

返回值有两个,一个是cursor光标位置,二个为多组key

渐进式遍历,在遍历过程中,不会在服务器这边的存储任何的状态信息,遍历可随时终止,不会对服务器产生任何作用.渐进式遍历中对数据进行操作,那么此时就会出现数据变化的问题,需要小心.

2.数据库管理

redis有16个数据库,每一个数据库都与其他的隔离,即数据不会相互影响.下标范围为[0,15]

SELECE n:切换数据库

DBSIZE:当前数据库中key的个数

FLUSHHALL:删全部库 --- 不可以乱用,谨慎仔细

FLUSHHDB:删当前库

3.自定义Redis客户端

Redis在应用协议层,需要自定义支持,传输层基于TCP,但是不与TCP强耦合.

需要知道Redis应用层协议,才能对服务端进行通信

Redis应用层协议 RESP

port:6379

通信模型:请求与响应的一问一答形式

优点:1.简单 2.进行快速解析 3.肉眼可读

客户端发送给服务器redis命令

4.持久化

1.持久化:就是将数据存储到硬盘上

2.redis是一个内存数据库, 是把数据存储在内存中.为了让redis持久化,我们将redis数据存储到硬盘上.

3.redis优势就是由于内存存储提供的效率,为了保证数据快,数据还得存储在内存上,为了持久化redis将数据存储在硬盘上.那redis的策略就是将内存与硬盘都存储数据,并且两份数据在理论上完全相同.当新数据来时,内存和硬盘可通过决策进行写入数据

4.查询某个数据从内存中拿取,而硬盘的数据只在redis重启时,硬盘的数据恢复内存的数据.代价就是空间消耗更大,因为存储了两份.不过硬盘的价格不贵,成本不会过高

持久化策略

1.RDB -- 定期拷贝,到达设定时间时,将redis内存的数据拷贝到硬盘上

2.AOF -- 定时拷贝,redis内存修改就立即对硬盘进行更新

RDB(Redis DataBase)

1.RDB定期将redis的内存所有数据,都写入到硬盘上,形成一个"快照".redis存储当前的文件放到磁盘.

2.如果磁盘上面没有原来的文件,那么直接将该"快照"命名为配置默认名字的rdb文件 ; 如果磁盘上面存储着原来的文件,那么此时先存储为临时文件,快照生成完毕后,删除之前rdb文件,将临时文件重命名为rdb文件

3.RDB有两种操作.一是自动触发,二是手动触发

手动触发:需要用户手动进行手动执行命令

1.save:执行save时,redis专注执行快照生成操作,此时就会阻塞redis的其他进程.此时就会出现redis卡死,MySQL抗压的操作,不建议使用

2.bgsave:不影响redis服务器处理其他客户端的请求和指令.redis通过多进程实现高并发,

bgsave过程介绍:判断当前是否存在其他子进程进行工作,存在其他进程在bgsave,那直接返回;没有其他子进程,则fork生成子进程,用于写文件操作生成"快照".父进程(redis服务器)继续正常服务,子进程结束会发送给父进程,父进程更新信息,子进程删除

Redis4 渐进式遍历/自定义客户端/持久化,实用工具,redis,数据库,缓存

自动触发:即在配置文件中设置何条件下触发rdb

1.在配置文件中先设置存储在哪个路径,并且其文件名为什么.

2.该rdb文件的内容为二进制存储.二进制存储的好处是可以压缩数据,节省一些空间.不过二进制的问题就是格式,如果格式错误,重启时就会读取不出来,那redis就会直接退出.redis提供rdb工具redis-check-rdb进行检测格式问题

3.触发条件,在文件中格式为:save <second> <changes>,其含义为之后当second和changes条件同时满足才触发自动的rdb,second时间后,changes改变keys的次数.一般该设置为长时间改变几次次数或者短时间大量改变key的次数,因为该rdb策略生成快照成本高,不可以太频繁改变

4.通过shutdown来关闭(正常关闭)redis服务器,也会触发save生成新rdb文件

5.redis进行主重复制时,主节点也会自动生成rdb文件,然后将rdb文件传输给从节点

6.如果kill命令关闭(异常关闭)redis服务器,那么就不会生成新rdb文件,未保存的数据自然就丢失了

总结:

1.RDB是压缩的二进制文件,适用于拷贝和全量复制的场景

2.由于其二进制方式的存储,使得其可以直接读取到内存中,只需要按照字节格式就能放到对象中,比起AOF是使用文本方式存储数据的,需要对字符串进行切割.所以redis的RDB回复比AOF快

3.RDB的save阻塞redis,而bgsave要fork创造子进程,属于重量级操作,频繁操作则成本很高

4.RDB有不同版本二进制文件,会使得不同环境出现兼容性问题.如果真出现这个问题,需要将数据取出插入新redis服务器中

5.最大问题其实是两次快照之间可能会出现异常退出,那么当前新数据会在重启后丢失

AOF(Append Only File)

以独立日志的⽅式记录每次写命令,重启时再重新执⾏ AOF ⽂件中的命令达到恢复数据的⽬的。AOF 的主要作⽤是解决了数据持久化的实时性,⽬前已经是Redis 持久化的主流⽅式理解掌握好 AOF 持久化机制对我们兼顾数据安全性和性能⾮常有帮助。
注意:需要在配置文件确认使用AOF机制优先级:AOF>RDB
1.缓冲区
其实当前还有一个问题,AOF写内存,也写硬盘啊.会不会使得效率变低呢?其实不会
1.AOF机制并非直接让工作线程写到磁盘上去,而是写到内存中的缓冲区,积累一波后再存到硬盘中
2.硬盘上的读写数据,顺序读写速度比较快,AOF就是顺序读写策略
Redis4 渐进式遍历/自定义客户端/持久化,实用工具,redis,数据库,缓存
2.缓冲区刷新策略
Redis4 渐进式遍历/自定义客户端/持久化,实用工具,redis,数据库,缓存
alway:只要变更就刷新缓冲区,性能最低,数据可靠性最高
everysec:每秒刷新缓冲区,性能一般,数据可靠度一般.默认策略
no:不提供刷新策略,让操作系统来刷新,数据可靠度最低,性能高
3.AOF重写机制
问题:
1.AOF在不断更新新数据,体积不断变大.空间的问题只需要硬盘大就能解决
2.但redis的启动时间会由于体积变大而变久
3.AOF的内容有很多是冗余的.我们要的其实不是中间过程,而是最终结果
重写机制 -- 手动触发和自动触发
1.手动触发: 调用 bgrewriteaof 命令
2.自动触发: 根据 auto-aof-rewrite-min-size 和 auto-aof-rewrite-percentage 参数确定⾃动触发时机.auto-aof-rewrite-min-size:表示触发重写时AOF的最小⽂件大小,默认为 64MB;auto-aof-rewrite-percentage:代表当前 AOF占用⼤⼩相⽐较上次重写时增加的⽐例.
bgrewriteao的步骤:
1.父进程继续进行其他操作,子进程重写.之前的重写还在进行,那当前的子进程就会退出;如果正在执行rdb,那么就会等待rdb结束再进行aof重写
2.重写只关心内存最终状态,子进程只要把内存的数据取出来,以AOF文件存储
3.子进程创建AOF文件同时,父进程增加新数据,那么就是对旧AOF文件进行写入[3.1这条路].该功能是防止极端情况,redis在子进程重写时异常退出,新数据在重启时需要从 旧AOF文件中读取
4.子进程的AOF是fork之前的数据,而父进程后续修改的,其实子进程不知道.父进程的aof_rewrite_buf缓冲区,专门放fork后的数据[3.2]
5.子进程的AOF文件写好发送信号通知父进程,随后父进程的 aof_rewrite_buf缓冲区内容也写入新AOF文件[5.1,4,5.2]
Redis4 渐进式遍历/自定义客户端/持久化,实用工具,redis,数据库,缓存

混合持久化

RDB的数据可靠度不太高,AOF的文本文件后续加载成本高

redis引入混合持久化,即按照aof的方式,每一个请求更新一次,一旦aof触发重写,就会将rdb的二进制格式写入到aof文件中,后续的更新操作,追加到aof文件后面文章来源地址https://www.toymoban.com/news/detail-741177.html

到了这里,关于Redis4 渐进式遍历/自定义客户端/持久化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 写点东西《渐进式网络应用入门》

    PWA 是一种渐进式网络应用程序,它结合了应用程序的功能和网络技术。 您可以说它们是使用网络技术构建的应用程序,但感觉和功能都像原生应用程序。 网络应用程序似乎变得有限,因为大多数人更喜欢构建移动应用程序,以便用户可以将它们保存在手机上,而不是构建网

    2024年01月19日
    浏览(45)
  • Vue3 Flask 渐进式入门笔记

    以下均在Windows 10环境下实现。 安装node.js的过程略过。 1、在cmd命令行中执行以下命令: 2、查看vue版本 注意,如果电脑中以前有vue2版本,则需要卸载后重启电脑再重新安装,否则有可能安装失败。 1、执行以下命令以创建项目 第一步需要填写项目名称;后面的除router建议选

    2024年02月09日
    浏览(43)
  • IO/NIO交互模拟及渐进式实现

    2024年02月03日
    浏览(54)
  • 渐进式编程之旅:探寻PHP函数的奇妙世界

    目录 前言 一、函数的定义和调用 1.1 初识函数 1.1.1 函数分类 1.1.2 自定义函数 1.1.3 return 1.2 参数设置 1.2.1 无参函数 1.2.2 按值传递参数 1.2.3 引用传参 1.2.4 设置参数默认值 1.2.5 指定参数类型(弱) 1.3 变量的作用域 1.3.1 变量分类 1.3.2 全局变量的使用 1.3.3 global关键

    2024年02月08日
    浏览(65)
  • 【GitOps系列】如何实施自动化渐进式交付?

    前言 在实施金丝雀发布的过程中,我们通过 Argo Rollout 的金丝雀策略将发布过程分成了 3 个阶段,每个阶段金丝雀的流量比例都不同,经过一段时间之后,金丝雀环境变成了新的生产环境。实际上,这也是一种渐进式的交付方式,它通过延长发布时间来保护生产环境,降低了

    2024年02月14日
    浏览(47)
  • 渐进式web全栈:blazor web app

    本文要说的这种开发模式,这种模式并不是只有blazor支持,js中有一样的方案next.js nuxt.js;blazor还有很多其它内容,本文近关注渐进式开发模式。 是的,前后端是主流,不过以下情况也许前后端分离并不是最好的选择: 小公司,人员不多,利润不高,创业阶段能省则省 个人

    2024年02月05日
    浏览(51)
  • Unity教程||Unity 渐进式光照贴图烘焙详解

    随着各大计算平台的算力稳步增长,特别是GPU技术的不断进化,原先可望而不可及的技术比如实时光线追踪技术开始逐步走入玩家的视野。一些先锋厂商甚至已经超出Demo的范畴,开始正式推出支持实时光追的游戏。 不过目前的实时光追技术还只能在配备了最新Nvidia RTX 20系列

    2024年02月08日
    浏览(53)
  • Vue.js:构建用户界面的渐进式框架

    Vue.js是一种流行的JavaScript前端框架,用于构建用户界面。本文将介绍Vue.js的基本概念、特点、应用场景以及与其他框架的对比。 一、引言 在当今的前端开发领域,Vue.js已经成为了一个备受瞩目的框架。它的简洁、灵活和易于上手的特性使得开发人员能够快速高效地构建用户

    2024年01月23日
    浏览(56)
  • SSE实现消息实时推送,前端渐进式学习、实践,真香

    SSE(Server Sent Event),直译为服务器发送事件,顾名思义,也就是客户端可以获取到服务器发送的事件。我们常见的 http 交互方式是客户端发起请求,服务端响应,然后一次请求完毕;但是在 sse 的场景下,客户端发起请求,连接一直保持,服务端有数据就可以返回数据给客户端

    2024年02月21日
    浏览(43)
  • 【达摩院OpenVI】视频目标渐进式Transformer跟踪器ProContEXT

    论文链接:[arxiv] 代码应用: 开源代码:[github code] 开源应用:[modelscope] 视频目标跟踪(Video Object Tracking, VOT)任务以一段视频和第一帧中待跟踪目标的位置信息(矩形框)作为输入,在后续视频帧中预测该跟踪目标的精确位置。该任务对跟踪目标的类别没有限制,目的在于

    2023年04月20日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包