Redis 文件存储目录
Redis RDB 和 AOF 可以保存在同一目录吗?如何可以,如何设置?
可以,而且这是 Redis 的标准做法。
Redis 默认就是把 RDB 和 AOF 保存在同一目录 的,只是很多人没注意或没系统理解。
下面是一个 结论 -> 原理 -> 配置方式 -> 生产建议 -> 面试标准答案 的完整说明。
Redis 的 RDB 和 AOF 完全可以、也通常保存在同一个目录中,通过
dir参数统一指定。
- RDB:
dump.rdb - AOF:
appendonly.aof(或 AOF 目录) - 两者 不会互相覆盖
- Redis 启动时 优先加载 AOF
dir /data/redis
👉 所有持久化文件都保存在这个目录下
dbfilename dump.rdb
最终路径:
/data/redis/dump.rdb
appendonly yes
appendfilename appendonly.aof
最终路径:
/data/redis/appendonly.aof
appendonly yes
appenddirname appendonlydir
最终目录结构:
/data/redis/
├── dump.rdb
└── appendonlydir/
├── appendonly.aof
├── appendonly.aof.1.incr
└── appendonly.aof.1.base
📌 注意:
appenddirname是 相对于dir的子目录- AOF 文件会被拆分,便于管理和恢复
# 统一数据目录
dir /data/redis
# RDB
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
# AOF
appendonly yes
appenddirname appendonlydir
appendfsync everysec
# 混合持久化
aof-use-rdb-preamble yes
加载顺序:
1️⃣ 如果 appendonly yes 且 AOF 存在 -> 优先加载 AOF
2️⃣ 否则加载 dump.rdb
📌 即使 RDB 和 AOF 在同一目录,也不会冲突。
❌ 不支持
Redis 只有一个 dir,不能为 RDB 和 AOF 单独指定不同绝对路径。
✅ 用 AOF 子目录(Redis 7+)
appenddirname appendonlydir
或者:
✅ 文件系统层面
- 使用软链接(ln -s)
- 使用不同磁盘挂载到同一目录下的子目录
- RDB + AOF 放同一数据目录
- 定期 拷贝 /data/redis/ 做异地备份
- 在从节点做备份
- 把 RDB、AOF 放到不同
dir(做不到) - 手动修改 AOF 文件位置
- 主节点频繁 fork
- ❌ 认为 RDB 和 AOF 不能共存
- ❌ 认为必须分目录
- ❌ 不知道 Redis 启动优先加载 AOF
- ❌ Redis 7 之前不知道 AOF 不能拆分
Redis 的 RDB 和 AOF 可以也通常保存在同一目录中,通过
dir参数统一指定。RDB 使用
dbfilename,AOF 使用appendfilename或appenddirname指定文件名或子目录。Redis 启动时如果开启 AOF,会优先加载 AOF,不会与 RDB 冲突。
生产环境一般采用 RDB + AOF 混合持久化,并在从节点统一备份该目录。