redis aof数据持久化

AOF(Append Only File)

将我们所有的命令都记录下来,history,恢复的时候就把这个文件全部再执行一遍!

是什么

以日志的形式来记录每个写操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该重新构建数据,换言之,redis重启的话就会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作.

Aof保存的是appendonly.aof文件

append

指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no:关闭, 开启改为yes,重启redis就可以生效了.

appendonly no

持久化配置策略:

appendfilename appendonly.aof #指定更新日志文件名,默认为appendonly.aof
# appendfsync 指定更新日志条件,共有3个可选值:
# appendfsync always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全),每次更新都会去修改
appendfsync everysec:表示每秒同步一次(折衷,默认值)
# appendfsync no:表示等操作系统进行数据缓存同步到磁盘(快),不修改.

优点和缺点

优点:

1.每一次修改都同步,文件的完整会更加好!
2.每秒同步一次,可能会丢失一秒的数据!
3.从不同步,效率最高的!

缺点:

1.相对于数据文件来说,aof远远大于rdb,修复的速度也比rdb慢!
2.aof运行效率也要比rdb慢,所以我们redis默认的配置就是rdb持久化!

如果这个aof文件有错位,这时候redis是启动不起来的.我们需要修复这个aof文件.
redis给我们提供了一个工具redis-check-aof --fix

修复

如果文件正常,重启就可以直接恢复了!

重写规则说明

aof默认就是文件的无限追加,文件会越来越大!

如果aof文件大于64m,太大了!就会fork一个新的进程来将我们的文件进行重写!

扩展


posted @ 2020-10-04 14:19  HaimaBlog  阅读(144)  评论(0编辑  收藏  举报