ToB企服应用市场:ToB评测及商务社交产业平台

标题: 小小redis持久化,拿捏 [打印本页]

作者: 慢吞云雾缓吐愁    时间: 2024-5-19 22:25
标题: 小小redis持久化,拿捏
前言

我们先来说说什么是持久化
一、redis的两种持久化方式


1.RDB

将当前数据状态进行保存,快照情势,存储数据结果,存储格式简单,关注点在数据。
2.AOF

将数据的操作过程进行保存,日志情势,存储操作过程,存储格式复杂,关注点在数据的操作过程。
二、 RDB

1. RDB的存储方式

理解RDB的存储方式,这种方式叫快照,就相当于给当前数据立刻拍一张照片存起来,在电脑中以二进制的情势存储,数据恢复的时候直接拿出照片,一个copy瞬间恢复
2. save指令


记得redis是个单线程的工作模式,它会创建一个使命队列,所有的命令都会进到这个队列里边,在这儿排队实行,实行完一个消失一个,当所有的命令都实行完了,OK,结果达到了。
但是如果现在我们实行的时候save指令保存的数据量很大会是什么现象呢?
他会非常耗时,以至于影响到它在实行的时候,背面的指令都要等,所以说这种模式是不友好的,这是save指令对应的一个问题,当cpu实行的时候会阻塞redis服务器,直到他实行完毕,所以说我们不建议在线上环境用save指令
3. bgsave指令

当save指令的数据量过大时,单线程实行方式造成服从过低,
此时我们可以使用:bgsave指令,bg其实是background的意思,后台实行的意思
手动启动后台保存操作,但不是立即实行
bgsave工作原理:当实行bgsave的时候,客户端发出bgsave指令给到redis服务器。注意,这个时候服务器马上回一个结果告诉客户端后台已经开始了,与此同时它会创建一个子进程,使用Linux的fork函数创建一个子进程,让这个子进程去实行save相关的操作
4. save设置自动实行

这里分析一下,save指令在开始的时候默认是必要我们手动输入指令才能保存的,懒星人受不了这个,所以我们可以通过
  1. save second changes
复制代码
设置自动持久化的条件,满意限定时间范围内key的变化数量达到指定数量即进行持久化
参数
second:监控时间范围
changes:监控key的变化量
5. RDB的优点

6. RDB的缺点

三、AOF

1. AOF的存储方式

AOF的存储方式是一种日志的情势,开启AOF之后就会记录每一次对于数据的操作(增删改),查询操作是不记录的,因为没对数据没有发生变化
AOF持久化:以独立日志的方式记录每次写命令,重启时再重新实行AOF文件中命令 达到恢复数据的目的。与RDB相比可以简单理解为由记录数据改为记录数据产生的变化
AOF的主要作用是办理了数据持久化的实时性,现在已经是Redis持久化的主流方式
2. AOF实行策略

AOF写数据三种策略(appendfsync)
3. AOF重写

什么叫AOF重写?
举个栗子来理解,如下图情况

可以看到我们对于一个数据的值修改了多次,但其实这个'name'变量终极值只与末了一条set指令设置的值有关,所以将末了一个语句拎出来到一个新的AOF文件中
同理可得,第二部分我们对于一个数据进行了n次+1操作,但其实就是+n,重写这一部分的语句到新的AOF文件中,这样我们就能极致的压缩AOF文件巨细
4.AOF重写的作用

5. AOF工作流程

①. Client作为命令的来源,会有多个源头以及源源不绝的哀求命令
②. 在这些命令到达Redis Server 以后并不是直接写入AOF文件,会将其这些命令先放入AOF缓存中进行保存。这里的AOF缓冲区实际上是内存中的一片区域,存在的目的是当这些命令达到一定
量以后再写入磁盘,制止频繁的磁盘IO操作
③. AOF缓冲会根据AOF缓冲区同步文件的三种写回策略将命令写入磁盘上的AOF文件
④. 随着写入AOF内容的增加为制止文件膨胀,会根据规则进行命令的合并(又称AOF重写),从而起到AOF文件压缩的目的
⑤. 当Redis Server 服务器重启的时候会从AOF文件载入数据。
四、RDB与AOF区别

持久化方式RDBAOF占用存储空间小(数据级:压缩)大(指令级:重写)存储速度慢快恢复速度快慢数据安全性会丢失数据依据策略决定资源消耗高/重量级低/轻量级启动优先级低高五、 RDB与AOF应用场景

1. 对数据非常敏感,建议使用默认的AOF持久化方案

AOF持久化策略使用everysecond,每秒钟fsync一次。该策略redis仍可以保持很好的处理性能,当出 现问题时,最多丢失0-1秒内的数据。
注意:由于AOF文件存储体积较大,且恢复速度较慢
2. 数据呈现阶段有用性,建议使用RDB持久化方案

数据可以良好的做到阶段内无丢失(该阶段是开发者或运维职员手工维护的),且恢复速度较快,阶段 点数据恢复通常采用RDB方案
注意:利用RDB实现紧凑的数据持久化会使Redis降的很低,慎重总结:
3.综合比对

说了半天,其实当然是要RDB和AOF同时开启才能将利益最大化,毕竟这俩都是有利有弊嘛,平时我们采用轻量级的AOF,再定期给数据拍张照(RDB),双重保障更安心
个人感觉持久化应该是很重要的吧,但是我现在没遇到口试有问啊,难道是太简单了,真的太简单了,总结的时候就什么都想写进去,但其实如果真是问到的话也就两句话就能分析白了

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4