AOF的功能

一、基础概念

AOF(append only file)持久化:以独立日志的方式记录每次写命令, 重启时再重新执行AOF文件中的命令达到恢

复数据的目的。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式。


AOF的工作流程操作:命令写入 (append)、文件同步(sync)、文件重写(rewrite)、重启加载 (load)


流程如下:

1、所有的写入命令会追加到aof_buf(缓冲区)中

2、AOF缓冲区根据对应的 appendfsync(同步策略) 向硬盘做同步操作

  • always的速度慢,everysec和no都很快,

  • always:每次有数据修改发生时都会写入AOF文件,丢失的数据最少,但是硬盘IO开销很多

  • everysec:每秒同步一次数据,如果Redis发生故障,可能会丢失1秒钟的数据

  • no:则系统控制,不可控,不知道会丢失多少数据

3、随着AOF文件越来越大,需要定期对AOF文件进行重写,达到压缩 的目的

4、当Redis服务器重启时,可以加载AOF文件进行数据恢复


配置文件中AOF相关选项

appendonly yes # 改为yes,开启AOF功能

appendfilename "appendonly.aof" # 生成的AOF的文件名

appendfsync everysec # AOF同步的策略

no-appendfsync-on-rewrite yes # AOF重写时,是否做append的操作,yes是不做,在 rewrite 期间的 AOF 有丢失的风险


二、RDB和 AOF 各自有什么优缺点 ?


AOF 优点

1、实时性好,aof 持久化可以配置 appendfsync 属性,有 always ,每进行一次命令操作就记录到aof 文件中一次

2、通过 append 模式写文件,即使中途服务器宕机,可以通过 redis-check-aof 工具解决数据一致性问题


AOF 缺点

1、AOF 文件比 RDB 文件大,且 恢复速度慢

2、数据集大 的时候,比 RDB 启动效率低

posted @ 2025-04-28 13:08  jock_javaEE  阅读(35)  评论(0)    收藏  举报