Skip to main content
☘️ Septvean's Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Redis 文件存储目录

Redis RDB 和 AOF 可以保存在同一目录吗?如何可以,如何设置?

可以,而且这是 Redis 的标准做法。

Redis 默认就是把 RDB 和 AOF 保存在同一目录 的,只是很多人没注意或没系统理解。

下面是一个 结论 -> 原理 -> 配置方式 -> 生产建议 -> 面试标准答案 的完整说明。


一、结论(直接记)

Redis 的 RDB 和 AOF 完全可以、也通常保存在同一个目录中,通过 dir 参数统一指定。

  • RDBdump.rdb
  • AOFappendonly.aof(或 AOF 目录)
  • 两者 不会互相覆盖
  • Redis 启动时 优先加载 AOF

二、Redis 是如何决定“保存到哪里”的?

关键只有一个参数

dir /data/redis

👉 所有持久化文件都保存在这个目录下


RDB 相关参数

dbfilename dump.rdb

最终路径:

/data/redis/dump.rdb

AOF 相关参数(Redis ≤ 6.x)

appendonly yes
appendfilename appendonly.aof

最终路径:

/data/redis/appendonly.aof

AOF 相关参数(Redis ≥ 7.x,推荐)

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

四、Redis 启动时如何加载?(非常爱考)

加载顺序:

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 使用 appendfilenameappenddirname 指定文件名或子目录。

Redis 启动时如果开启 AOF,会优先加载 AOF,不会与 RDB 冲突。

生产环境一般采用 RDB + AOF 混合持久化,并在从节点统一备份该目录。