简介
AOF通过保存Redis中写操作的命令来记录数据状态
优点
丢失数据少,4.0以后的版本AOF包含RDB的全量数据与新的写操作的记录
弊端
体量无限变大,恢复慢
配置
将redis.conf中appendonly设置为yes就算开启AOF,AOF和RDB可同时开启,如果开启了AOF只会用AOF恢复
appendonly yes
启动redis时,下列日志表示从AOF加载数据
DB loaded from append only file: 0.000 seconds
随着Redis写操作不断变多,AOF文件也会越来越大,恢复越来越慢。为了解决这个问题,Redis新增了重写的机制,Redis通过调用bgrewriteaof可以对日志文件进行重写。
①4.0以前重写是删除抵消命令合并重复命令
②4.0以后重写是将老数据RDB到AOF文件中,增量数据以指令的方式Append到AOF中,优势是利用了RDB的快与AOF的全
例如以下AOF文件,第一行是RDB,后面是AOF增量数据的指令
AOF自动重写配置
auto-aof-rewrite-percentage 默认值为100。当AOF文件超过上次重写的百分之多少时进行重写
auto-aof-rewrite-min-size 默认值为64mb。AOF文件达到多大才会重写
AOF持久化策略的配置appendfsync
appendfsync配置,可取always、everysec、no
设置为no时,不会调用fsync,是由操作系统自动调度刷磁盘,效率是最好的,但也是丢失数据最多的。
设置为always时,每次执行写操作都会调用fsync,是数据保存最全的,但效率慢,因为每次需要fsync。
设置为everysec是最多每一秒调用一次fsync,最多可能丢失一秒的数据,兼顾了效率与安全性。