redis持久化策略对比分析:RDB和AOF

redis持久化两种方式:RDB和AOF。默认开启的是RDB。

RDB是快照形式,是把内存的当前状态直接保存在RDB中,保存策略是隔一段时间保存一下。

AOF是命令行形式,执行一条命令,直接把命令存到一个aof文件中,保存策略默认一秒钟保存一下命令,安全性也好,性能差些。

RDB

刷到磁盘三种策略:

  1. save命令(手动):同步;在Redis主线程中工作,因此会阻塞其他请求操作,应该避免使用。
  2. bgsave命令(手动):异步;调用Fork,产生子进程,父进程继续处理请求。子进程将数据写入临时文件,并在写完后,替换原有的.rdb文件。Fork发生时,父子进程内存共享,所以为了不影响子进程做数据快照,在这期间修改的数据,将会被复制一份,而不进共享内存。所以说,RDB所持久化的数据,是Fork发生时的数据。
  3. 配置文件(自动):实际上它和bgsave命令持久化原理是相同的。

RDB过期键的处理:

  1. RDB生成时,过期键会被过滤
  2. RDB载入时,以主服务器运行,则过滤过期键;以从服务器运行,则忽略过期键,不做处理

AOF

配置文件中打开AOF:

appendonly yes

刷到磁盘三种策略: 

  1. appendfsnyc always:不丢失数据;IO开销大,一般SATA磁盘只有几百TPS
  2. appendfsnyc everysec:每秒进行与fsync,最多丢失1秒数据;可能丢失1秒数据
  3. appendfsnyc no:不用管;不可控

RDB过期键的处理:

  1. AOF生成时,如果过期键还没被删除,则忽略,当被删除以后,会追加记录一条DEL命令
  2. AOF载入时,过期键会被过滤

参考

https://segmentfault.com/a/1190000016021217

https://www.cnblogs.com/rgever/p/9462626.html

https://www.cnblogs.com/superchong/p/10482558.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值