Redis的持久化方式

Redis 提供了2个不同形式的持久化方式

RDB(Redis DataBase)

RDB 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里

RED 是 redis默认的持久化方式(默认开启)

备份是如何执行的

  • Redis 会单独创建(fork)一个子进程来进行持久化,会先将数据写入到 一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能 如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。

Fork

  • Fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等) 数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程
  • 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,Linux中引入了 写时复制技术
  • 一般情况父进程和子进程会共用同一段物理内存,只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。
  1. redis.conf 配置文件中,253 行可以修改 rdb 持久化文件的名称
    在这里插入图片描述
  2. 263 行可以设置持久化备份文件的存放位置
    在这里插入图片描述
  3. rdb备份的保存策略
    在这里插入图片描述
  4. redis 中执行命令时,如果执行 save (同步)或者 bgsave (异步),也可以触发 redis 使用 rbd 的方式将内存的数据写入到 rdb 文件
  5. redis正常关闭时,也会自己调用bgsave完成数据的备份
  6. 如果本次保存后,下一个保存还未开始,如果redis宕机了,会导致时间间隔内的所有的数据丢失
  7. 如果我们对数据保存的粒度没有太高的要求,推荐使用rdb
  8. mysql(持久化)+redis(内存存储)
AOF(Append Of File)

将每次的写操作以日志的形式保存到日志文件中(可读的),比较占磁盘空间,保存粒度细,恢复时会将aof文件中的所有的写指令从前到后执行一遍,性能较差。

  1. 开启aof持久化 , 修改redis配置文件 appendonly no 改为 yes
    在这里插入图片描述
AOF和 RDB
  1. 如果都启用,备份时两个都会备份
  2. 如果redis启动时,优先加载 aof 中的数据( aof 保存数据粒度细,丢失概率小)
  3. 取消rdb备份:注释掉 #dbfilename ""
AOF备份防止误操作
  1. AOF 以日志形式保存,所有的写指令都是以增量的方式追加
  2. 如果有误操作我们可以手动修改aof文件删除误操作
  3. AOF同步策略
    在这里插入图片描述
触发机制,何时重写
  1. Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发
  2. 重写虽然可以节约大量磁盘空间,减少恢复时间。但是每次重写还是有一定的负担的,因此设定Redis要满足一定条件才会进行重写。
  3. 系统载入时或者上次重写完毕时,Redis会记录此时AOF大小,设为base_size
  4. 如果Redis的AOF当前大小>= base_size +base_size*100% (默认)且当前大小>=64mb(默认)的情况下,Redis会对AOF进行重写。
    在这里插入图片描述
AOF优点:
  1. 备份机制比较稳健(丢失数据概率小)
  2. 不用额外备份,可以直接通过aof文件防止误操作

缺点:

  1. 日志方式保存,占用磁盘空间较多
  2. redis加载时会从前到后将所有命令都执行一遍,恢复数据时慢
  3. aof方式保存的粒度细,redis性能压力大
RDB和AOF的选择以及区分:
  1. 官方推荐如果一定要使用缓存,可以两个都使用
  2. 如果不考虑数据的丢失问题,可以只使用rdb
  3. 不推荐单独使用aof,如果要用推荐aof+rdb一起用
  4. 如果有mysql之类的持久化方式,redis只作为纯内存缓存,可以不开启持久化

感谢阅读, 如果文章对你有帮助记得点赞 收藏 + 关注哦 ! 各种疑难杂症QQ交流群:1101584918,欢迎大家加入。
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇探长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值