redis 的AOF 持久化方案和RDB持久化方案优劣势对比

6 篇文章 0 订阅
5 篇文章 0 订阅

1.AOF和RDB两种redis方式介绍

redis 持久化主要做数据灾备的,如果redis挂了,能够基于持久化文件快速恢复redis数据。避免Redis长期宕机造成数据库压力过大。

AOF持久化方式:以命令的方式写入日志文件,以append-only的模式写入日志文件中,在Redis重启的时候以回放AOF命令,来实现恢复数据

RDB持久化方式:以快照的方式进行持久化,每隔一段时间就会生成新的RDB文件,或者达到一定的数据量,达到一定的时间,生成RDB快照文件

2.RDB持久化方式的优点

RDB 持久化是以文件的方式进行存储,Redis恢复数据,只需要读取RDB文件即可恢复数据,而且RDB在备份的时候是以文件的方式,只需要在后台开启一个IO线程即可操作。是以零拷贝的方式写入文件,速度非常快,在恢复数据时,也是开启IO线程读取RDB文件。

3.RDB持久化方式的缺点

(1)RDB 持久化方式在做数据备份的时候只有达到一定的数据量,或者达到指定的时间才会做数据备份,每次备份的时间间隔太长,容易丢数据

(2)如果每次备份的文件过大的话,会导致客户端服务停顿数毫秒,甚至是几秒,所以一定不能让RDB时间过长,否则每次生成文件过大,会导致redis本身性能的影响

4.AOF持久化方式的优点

(1)AOF是以命令的方式进行备份,其实就是redis操作回滚命令的形式,这种方式每次备份的数据量少,只有当redis里数据改变的时候才会写入命令,通过一个后台线程执行fsync操作 ,一般1秒执行一次fsyncm,保证os cache 能够刷入磁盘

(2)AOF是以appen-only模式刷入磁盘,写入速度非常快,不需要磁盘寻址,写入的文件不容易破损,即使文件尾破损,也有方法修复

(3)AOF在有人执行误删操作,flushall 命令时,会将最后一个flushall 命令删除,然后立即拷贝AOF文件进行恢复数据

5.AOF持久化方式的缺点

(1)相比于RDB文件,AOF文件更大

(2)AOF开启后需要有后台线程进行写入操作,如果写入频率比较大,会影响redis的性能

(3)AOF是以命令的方式写入,有出bug的概率。

(4)做数据恢复比较慢,需要redis一行行的读命令恢复,还有做冷备,需要自己写脚本定时备份

6.2者对比,如何选择?

(1) 不能单纯的使用RDB做备份,单纯使用RDB会造成数据丢失

(2)也不能单纯的使用AOF,因为AOF不适合做冷备,而且AOF恢复数据比较慢,而且容易有bug

(3) 可以把两个都开启,当redis宕机时,使用RDB快速恢复,RBD没有备份下来的然后部分数据使用AOF恢复

注意:AOF和RDB同时开启的时候,当redis宕机重启的时候默认使用AOF恢复数据,如果想使用RDB恢复数据,可以对redis配置文件进行热修改,将AOF先暂时关闭。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值