一、AOF(Append Only File)是什么
将客户端的每一个写操作命令以日志的形式记录下来,追加到appendonly.aof的文件末尾,在redis服务器重启时,会加载aof文件中的所有命令,来达到数据恢复的目的。
AOF将我们的所有命令都记录下来,类似于history.恢复的时候就把这个文件全部执行一遍。以日志的形式记录每个写操作,将redis执行过的所有指令记录下来(读操作不记录),只允许追加文件但不可改写文件。redis在启动之初会读取该文件重新构建数据。换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。AOF 保存的是 appendonly.aof 文件。
二、AOF如何开启
AOF默认是不开启的,我们需要手动在配置文件redis.conf中开启。将no改为yes就开启了AOF,然后重启redis就生效了。
如果这个aof文件有错误,这个时候redis是启动不起来的,我们需要修复这个aof文件。
redis给我们提供了一个工具 redis-check-aof --fix
三、AOF的触发方式
1、手动触发
通过bgrewriteaof命令:重新AOF持久化生成aof文件(触发重写)
2、自动触发
默认情况,redis是没有开启AOF(默认使用RDB持久化),需要通过配置文件开启。
AOF的持久化策略有三种:
(1)always: 把每个写命令立即同步到AOF文件,很慢但安全。
(2)everysec: 每秒同步一次,默认配置。
(3)no: redis不执行写入磁盘,交给OS系统处理,很快但不安全。
//redis.conf
appendonly no //是否开启AOF持久化,yes为开启,no为关闭
appendfilename "appendonly.aof" //追加文件名
appendfsync everysec //持久化策略
四、AOF优缺点
1、优点
(1)每一次修改都同步,文件的完整性会更加好。
(2)每秒同步一次,可能会丢失一秒的数据。
(3)从不同步,效率最高。
2、缺点
(1)相对于数据文件来说,aof远远大于rdb,修复的速度也比rdb慢。
(2)aof运行效率也要比rdb慢,所以我们redis默认的配置是rdb持久化。