Redis持久化配置-AOF
前述
- AOF: 将我们的所有命令记录下来,恢复的时候就把这个文件全部再执行一遍。
原理
以日志的形式来记录每个写操作,将Redis执行过的所有指令记录下来(读操作不记录)
只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
AOF保存的文件是:appendonly.aof
测试
appendonly yes # 默认不开启,需要设置为yes 开启aof
# 重启redis就会生效
[root@localhost bin]# ls
appendonly.aof dump.rdb mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-sentinel redis-server
# 如果appendonly.aof文件被破坏,则redis启动就会报错
[root@localhost bin]# redis-cli -p 6379
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> exit
修复aof
如果这个
aof
文件有错误,这时候redis
是启动不起来的,我们需要修复这个aof
文件。redis
给我们提供了一个工具redis-check-aof --fix
[root@localhost bin]# redis-check-aof --fix appendonly.aof
0x a8: Expected \r\n, got: 6161
AOF analyzed: size=178, ok_up_to=143, diff=35
This will shrink the AOF from 178 bytes, with 35 bytes, to 143 bytes
Continue? [y/N]: y
Successfully truncated AOF
[root@localhost bin]# vim appendonly.aof
- 如果文件正常,重启就可以直接恢复了
重写规格说明
如果Aof文件大于64MB,这个时候就会 fork 新的进程来将我们的文件进行重写
auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb
优缺点
优点
- 每一次修改都同步,文件的完整性会更加好
- 默认是每秒同步一次,可能会丢失一秒的数据
- 从不同步,效率最高
缺点
- 相对于数据文件来说,AOF 远远大于 rdb,修复的数据也比 RDB 慢
- Aof 运行效率也要比 rdb 慢,所以我们 redis 默认的配置就是 rdb 持久化!