redis 的持久化有两种方式:rdb全量持久化和aof增量持久化;redis
AOF优先级更高,在AOF开启状态下,且存在AOF文件,优先使用AOF恢复数据 ;数据库
服务器启动时,若未开启AOF持久化,则自动加载rdb文件进行数据恢复;服务器
经过配置文件中的配置项进行开启AOF功能:app
appendfsync
配置选项控制
always
每一个事件循环都会将aof_buf中的内容写入并同步到aof文件everysec
将aof_buf中的内容写入文件,并判断上次同步的时间,超过一秒(默认)就同步no
将aof_buf中的内容写入到文件,什么时候同步由操做系统决定由于aof文件中记录的是全部写命令,所以数据频繁变化时冗余较大,为解决此问题,引入aof重写功能;操作系统
注:aof重写并不分析aof文件,而是依据当前的数据快照生成写命令,替换掉原来的aof文件;code
aof由子进程在后台重写,带来新的问题,在重写期间产生的新的写命令,会形成数据库与aof文件中的数据不一致;为此,redis 设置了一个aof重写缓冲区,这个缓冲区在建立执行重写任务的子进程后启用,当redis执行完命令,会同时记录到aof缓冲区和aof重写缓冲区;进程