07.Redis的AOF持久化

AOF持久化

RDB快照功能可能造成数据丢失,如: 在 50秒内发生了5000次修改,然后服务器宕机了,刚刚执行的5000次修改数据就会丢失。

从 1.1 版本开始, Redis 增加了一种完全耐久的持久化方 式: AOF 持久化,将修改的每一条指令记录进文件appendonly.aof中 你可以通过修改配置文件来打开 AOF 功能:

 # appendonly yes

从现在开始, 每当 Redis 执行一个改变数据集的命令时(比如 SET), 这个命令就会被追加到 AOF 文 件的末尾。
这样的话, 当 Redis 重新启动时, 程序就可以通过重新执行 AOF 文件中的命令来达到重建数据集的目 的。你可以配置 Redis 多久才将数据 fsync 到磁盘一次。
有三个选项:

  • appendfsync always:每次有新命令追加到 AOF 文件时就执行一次 fsync ,非常慢,也非 常安全。
  • appendfsync everysec:每秒 fsync 一次,足够快(和使用 RDB 持久化差不多),并且在 故障时只会丢失 1 秒钟的数据。
  • appendfsync no:从不 fsync ,将数据交给操作系统来处理。更快,也更不安全的选择。 推荐(并且也是默认)的措施为每秒 fsync 一次, 这种 fsync 策略可以兼顾速度和安全性。

建议使用第二种策略

AOF重写

AOF重写是针对AOF文件中没用的指令进行优化重写
如: 执行incr readcount 连续5次,如果不进行重写,恢复数据时,这条指令也会被执行5次。
在这里插入图片描述

进行重写后AOF文件里会变成
在这里插入图片描述

*3 是指有三个参数(set , readcount , 5)
$3 指set 的长度为3
$9 指readcount的长度为9
$1 指5的长度为1
合起来的命令就是 set readcount 5.

如下两个配置可以控制AOF自动重写频率

 # auto-aof-rewrite-min-size 64mb //aof文件至少要达到64M才会自动重写,文件太小恢复速度本 来就很快,重写的意义不大 .
 # auto-aof-rewrite-percentage 100 //aof文件自上一次重写后文件大小增长了100%则再次触发重写

当然AOF还可以手动重写,进入redis客户端执行命令bgrewriteaof重写AOF 注意,AOF重写redis会fork出一个子进程去做,不会对redis正常命令处理有太多影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值