一、AOF
以日志的形式来记录每个 写操作
,将redis 执行过的所有 写指令记录下来(读操作不记录)
,只许追加文件但不可以改写文件,Redis 启动之初会读取该文件重新构建数据,换言之,Redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
二、AOF 默认不开启,需要手动在配置文件中配置
AOF
默认不开启,需要手动在配置文件中配置
也可以配置
配置文件的名称
, 默认是appendonly.aof
三、如果AOF
和RDB
同时开启,redis
是根据AOF
来恢复数据的
四、AOF
文件故障备份
AOF
的备份机制和性能虽然和RDB不同,但是备份和恢复的操作同RDB一样,都是拷贝备份文件,需要恢复时再拷贝到Redis工作目录下,启动系统即加载。
AOF
和RDB
同时开启,系统默认读取AOF
文件的数据
五、AOF
文件故障恢复
AOF
文件的保存路径,同RDB的路径一致
如果遇到
AOF
文件损坏可通过
redis-check-aof --fix appendonly.aof
进行恢复
六、AOF
同步频率设置
七、Rewrite
AOF
采用文件追加方式,但是会导致 文件越来越大,为了避免出现此种情况,新增了重写机制
,当AOF
文件的大小超过所设定的阈值时,Redis 就会启动AOF
文件的内容压缩,只保留可以恢复数据的最小指令集,可以使用命令 bgrewriteaof
。
Redis实现重写
AOF
文件持续增大而过大时,会fork
出一条新进程来将文件重写(也是先写临时文件最后再同名覆盖
),遍历新进程的内存中数据,每条记录有一条的set
语句(比如有 set a = 1, set a = 2, 最后保存 set a =2
)。重写AOF
文件的操作,并没有读取旧的AOF
文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的AOF
文件,这点和快照有点类似
何时发生重写
重写虽然可以节约大量磁盘空间,减少恢复时间,但是每次重写还是有一定的负担,因此设定Redis要满足一定条件才会进行重写
系统载入时或者上次重写完毕时,redis 会记录此时
AOF
文件的大小,设置为base_size
,如果Redis的AOF
文件当前大小 大于等于 两倍base_size
且当前大小 大于等于 64mb(默认)的情况下,Redis会对AOF
文件进行重写