一、是什么
以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下(“读操作”不作记录),只许追加文件但不可以改写文件(日志文件中只能追加指令内容,不能修改),Redis启动之初会读取该文件重新构建数据,换言之,Redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
二、AOF持久化流程
三、AOF默认不开启
RDB默认开启,AOF默认不开启。
可以在redis.conf中配置文件名称,默认为 appendonly.aof
AOF文件的保存路径,同RDB的路径一致。
四、AOF和RDB同时开启,Redis听谁的?
AOF和RDB同时开启,系统默认取AOF的数据(数据不会存在丢失情况)
五、AOF启动/修复/恢复
- AOF的备份机制和性能虽然和RDB不同,但是备份和恢复的操作同RDB一样,都是拷贝备份文件,需要恢复时再拷贝到Redis工作目录下,启动系统即加载。
- 正常恢复
- 修改默认的
appendonly no
,改为 yes - 将有数据的aof文件复制一份保存到对应目录(查看目录:config get dir)
- 恢复:重启redis,然后重新加载
- 修改默认的
- 异常恢复
- 修改默认的appendonly no,改为 yes
- 如遇到AOF文件损坏,通过
/usr/local/bin/redis-check-aof--fix appendonly.aof
六、AOF同步频率设置
七、Rewrite压缩
八、优势
- 备份机制更稳健,丢失数据概率更低
- 可读的日志文本,通过AOF稳健,可以处理误操作。
九、劣势
- 比起RDB占用更多的磁盘空间
- 恢复备份速度要慢
- 每次读写都同步的话,有一定的性能压力
- 存在个别BUG,造成恢复不能
十、总结
10.1 用哪个好
官方推荐两个都开启
如果对数据不敏感,可以单独选用RDB。
不建议单独使用AOF,因为可能会出现bug。
如果只是做内存缓存,可以都不用。
参考资源: