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. 配置步骤
-
编辑
redis.conf
文件
使用文本编辑器打开配置文件:sudo nano /etc/redis/redis.conf
-
修改 AOF 相关参数
根据需求调整appendonly
、appendfilename
、appendfsync
等参数。 -
保存并重启 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,兼顾数据安全性和恢复速度。