Redis 的 AOF(Append Only File)持久化机制是另一种重要的数据持久化方式,它通过记录每条写命令来保证数据的完整性和可恢复性。


1. 配置文件位置

AOF 的配置同样在 redis.conf 文件中,路径可能是:

  • /etc/redis/redis.conf
  • 或 Redis 安装目录下的 redis.conf

2. 核心 AOF 配置参数

redis.conf 中找到以下配置项并修改:

(1) 是否启用 AOF(appendonly

appendonly yes  # 启用 AOF 持久化(默认是 no)

(2) AOF 文件名(appendfilename

appendfilename "appendonly.aof"  # 默认文件名,可自定义

(3) AOF 刷盘策略(appendfsync

appendfsync everysec  # 默认推荐,每秒刷盘

可选值:

  • always:每条命令后刷盘(最安全,性能最低)。
  • everysec:每秒刷盘(默认推荐,平衡性能和数据安全)。
  • no:交给操作系统控制(最快,但可能丢数据)。

(4) AOF 文件存储路径(dir

dir /var/lib/redis  # 默认路径,需确保 Redis 有写入权限
  • 修改后需确保目录存在且 Redis 用户有读写权限。

(5) AOF 重写机制

auto-aof-rewrite-percentage 100  # AOF 文件大小增长超过上次重写后的 100% 时触发重写
auto-aof-rewrite-min-size 64mb   # AOF 文件大小至少达到 64MB 才触发重写
  • 重写作用:压缩 AOF 文件,去除冗余命令(如多次修改同一个键的命令)。

(6) AOF 文件损坏时的处理(aof-load-truncated

aof-load-truncated yes  # 如果 AOF 文件损坏,加载时截断损坏部分(默认 yes)

3. 配置步骤

  1. 编辑 redis.conf 文件
    使用文本编辑器打开配置文件:

    sudo nano /etc/redis/redis.conf
    
  2. 修改 AOF 相关参数
    根据需求调整 appendonlyappendfilenameappendfsync 等参数。

  3. 保存并重启 Redis 服务

    sudo systemctl restart redis
    

4. 验证 AOF 配置是否生效

  • 检查 AOF 文件
    查看指定目录下是否生成了 appendonly.aof 文件:

    ls -l /var/lib/redis/appendonly.aof
    
  • 查看 AOF 状态
    使用 INFO 命令查看 AOF 相关信息:

    redis-cli
    127.0.0.1:6379> INFO persistence
    

5. 生产环境推荐配置

appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
dir /data/redis/
  • 路径建议:将 AOF 文件存储到独立磁盘分区,避免磁盘满导致问题。
  • 监控:定期检查 AOF 文件大小和重写频率,确保备份正常。

6. 注意事项

  • 性能影响appendfsync always 会显著降低性能,生产环境建议用 everysec
  • AOF 重写:AOF 文件会不断增长,需定期重写以压缩文件大小。
  • 恢复数据:将 AOF 文件复制到配置的 dir 路径下,重启 Redis 即可自动加载。

7. 常见问题

  • Q:AOF 文件太大怎么办?
    A:手动执行 BGREWRITEAOF 命令重写 AOF 文件,或调整 auto-aof-rewrite-* 参数。

  • Q:AOF 文件损坏怎么办?
    A:使用 redis-check-aof 工具修复:

    redis-check-aof --fix appendonly.aof
    
  • Q:如何禁用 AOF?
    A:设置 appendonly no 并重启 Redis。


8. AOF 和 RDB 的选择

特性 AOF RDB
数据安全性 更高(可配置为每条命令刷盘) 较低(依赖快照间隔)
文件大小 较大(记录每条写命令) 较小(二进制压缩)
恢复速度 较慢(需重放命令) 较快(直接加载数据)
适用场景 要求数据零丢失 允许少量数据丢失,追求性能
  • 推荐:生产环境可以同时启用 AOF 和 RDB,兼顾数据安全性和恢复速度。