AOF持久化需正确配置、挂载目录并启动参数:启用appendonly yes、appendfsync everysec,挂载/data和配置文件,容器启动后可验证appendonly.aof生成及重启恢复。

在 Docker 容器中部署 Redis 并开启 AOF 持久化,关键在于三件事:用对配置、挂对目录、启动时指定参数。AOF(Append Only File)是 Redis 推荐的持久化方式,它记录每条写命令,重启时重放日志恢复数据,比 RDB 更安全可靠。
准备 Redis 配置文件并启用 AOF
从 Redis 官方文档 下载与你镜像版本匹配的 redis.conf(例如用 redis:7.0.4 就别用 6.x 的配置,否则可能报错如 repl-diskless-sync-max-replicas 不识别)。然后编辑该文件,重点修改以下几项:
-
appendonly yes—— 必须开启 AOF -
appendfilename "appendonly.aof"—— 文件名保持默认即可 -
appendfsync everysec—— 推荐设置,兼顾性能与安全性(每秒刷盘,最多丢 1 秒数据) -
requirepass yourpassword—— 设置密码,生产环境必需 -
protected-mode no—— 关闭保护模式(配合密码使用,否则远程连不上) -
bind 0.0.0.0或直接注释掉bind 127.0.0.1—— 允许外部访问 -
daemonize no—— 必须设为no,Docker 容器不支持守护进程模式,否则容器会立即退出
创建宿主机目录并挂载卷
持久化依赖宿主机路径,不能让数据留在容器里。执行以下命令创建结构清晰的目录:
mkdir -p /data/redis/conf /data/redis/data chmod 755 /data/redis/conf /data/redis/data cp redis.conf /data/redis/conf/
说明:
-
/data/redis/conf存配置文件,挂载到容器内/etc/redis/redis.conf或/usr/local/etc/redis/redis.conf(取决于镜像路径,官方镜像常用后者) -
/data/redis/data存 AOF 文件(appendonly.aof),挂载到容器内/data—— 这是 Redis 默认工作目录,AOF 自动写入此处 - 权限设为
755而非777,更符合生产安全习惯
运行容器并验证 AOF 是否生效
使用以下命令启动容器(以 Redis 7.0.4 为例):
docker run -d \ --name redis-aof \ -p 6379:6379 \ --restart=always \ -v /data/redis/data:/data \ -v /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \ redis:7.0.4 \ redis-server /usr/local/etc/redis/redis.conf
验证步骤:
- 连接测试:
docker exec -it redis-aof redis-cli -a yourpassword - 写入一条数据:
SET hello world - 退出后检查宿主机:
ls -l /data/redis/data/—— 应看到appendonly.aof文件且大小 > 0 - 停掉再启动容器:
docker restart redis-aof,重新连接仍能查到GET hello,说明 AOF 恢复成功
补充:AOF 重写与维护
AOF 文件会随写操作不断增长,Redis 支持自动重写压缩体积。确保配置中包含:
-
auto-aof-rewrite-percentage 100—— 当前 AOF 大小是上次重写后 2 倍时触发 -
auto-aof-rewrite-min-size 64mb—— 同时需大于 64MB 才重写(防小文件频繁重写) - 手动触发:
docker exec redis-aof redis-cli -a yourpassword BGREWRITEAOF - 若 AOF 损坏(如断电导致写半截),可用
redis-check-aof --fix /data/redis/data/appendonly.aof修复(在宿主机上运行)











