Redis 持久化之AOF操作

AOF(Append Only File)

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

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

Aof保存的是 appendonly.aof文件

在redis.windows.conf(windows版)中可查看配置:

 

 

 

 默认是不开启aof的,我们需要手动进行配置!

 

 重启redis服务

 

 如果这个aof文件有错误,这时候redis是启动不起来,我们需要修改这个aof文件。redis给我们提供了一个工具:redis-check-aof

如果文件正常,重启就可以恢复数据了。

优点和缺点

① 优点:

  • 每一次修改个都同步,文件的完整性更好。
  • 每秒同步一次,可能会丢失一秒的数据
  • 默认从不同步,效率更高的!

②缺点:

  • 相对于数据文件来说,aof远远大于rdb,修复的速度也比r'd'b慢!
  • Aof运行效率也要比rdb慢,所以redis默认的配置就是rdb持久化!

如果aof文件大于64m(aof默认大小),太大了!fork一个新的进程来将我们的文件进行重写。

 扩展:

1.RDB持久化方式能够在指定的时间间隔内对你数据进行快照存储。

2.aof持久化方式记录每次对数据服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以Redistribution协议追加保存每次写的操作到文件末尾,Redis还能对AOF文件进行后台重新,使得AOF文件的体积不至于过大。

3.只做缓存,如果你只希望你的数据在服务器运行的时候存在,你也可以不是有任何持久化

4.同时开启两种持久化方式:

  • 在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AO发文件班车的数据集要比RDB文件保存的数据集要完整。
  • RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件,那要不要只使用AOF呢?不建议,因为RDB更适合用于备份数据库,快速重启,而且不会有AOF可能潜在的Bug,留着作为一个万一的手段。

5.性能建议:

因为rdb文件只用作后备用途,建议在在sjava上持久化rdb文件,而且只要15分钟备份一次就够了,只保留sava 900 1 这条规则。

如果Enable aof,好处是在最恶情况下也只会丢失不超过两秒数据。

如果不enable aof,仅靠master-slave repllcation 实现高可用性也可以。

posted @ 2021-02-13 10:42  创客未来  阅读(739)  评论(0编辑  收藏  举报