Redis进阶-----RDB、AOF持久化

1.Redis是怎么实现持久化的?服务主从数据如何进行交互

RDB:用来进行全量持久化。适合做冷备。默认5分钟生成一次。

AOF:用来进行增量持久化。适合做热备。默认1秒生成一次。写入效率高,有fsysn操作,每秒向磁盘写入数据,类似于mysql的binlog。

Redis在重启时会使用RDB持久化文件来重构内存,使用AOF来重放近期的操作。

RDB的恢复效率要比AOF快。

如果开启AOF且存在AOF文件时,会优先加载AOF文件;AOF关闭或不存在是,加载RDB。如果这两者存在错误时,Redis会打开失败,并进行报错。

RDB和AOF的优缺点

RDB:

​ 优点:

​ 1.会生成多个数据文件,每个数据文件代表了Redis某一时刻的数据,适合做冷备。将数据同时拷贝到2个地方就可以实现异地容灾。线上服务挂了,只需要拷贝一份数据即可恢复。

​ 2.RDB对Redis的性能影响很小,只是在同步的时候fork一个子进程去负责持久化,数据库恢复速度要比AOF快

​ 缺点:

​ 1.默认5分钟,也就代表最多会丢5分钟的信息。而AOF默认只丢1秒的数据,数据完整性要比RDB高的多。

​ 2.RDB在生成数据快照时,如果文件很大,客户端可能会暂停几毫秒甚至几秒。

AOF:

​ 优点:

​ 1.通过后台fsysn操作去写入数据。写的方式是append-only,追加的方式写数据,会减少很多磁盘寻址的开销,性能很高,文件不易损坏。

​ 2.日志是以非常可读的方式记录,适合做灾难性数据误删除的紧急恢复。例如不小心使用了flushall,只要后台的重写还没有发生, copy一份AOF日志,清空掉flush命令即可。

​ 缺点:

​ 1.同样的数据AOF要比RDB大,因为他记录的都是操作指令,可能会有update等指令,所以要大一些。

​ 2.AOF开启后,Redis支持的QPS会相比只开启RDB之后要低,因为每秒都会进行一次fsysn操作。

2.线上如何使用RDB和AOF

两者全部开启,出现故障时,首先使用RDB进行数据恢复,然后使用AOF做数据补全。

3RDB原理是什么

fork和cow(copy and write)

fork:redis创建子线程来进行RDB操作。

cow:父子线程共享数据段,父进程继续提供读写操作。

4.Pipline

将多次IO往返的时间缩减为1次。前提是pipeline执行的指令之间没有因果相关性。使用redis-benchmark进行压

测的时候可以发现影响redis的QPS峰值的一个重要因素是pipeline批次指令的数目。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值