首页/数据/Redis 进阶速查/dbfilename 与 dir:数据文件位置
持久化56 条

dbfilename 与 dir:数据文件位置

dbfilename 决定 RDB 文件名(默认 dump.rdb),dir 决定工作目录;AOF 文件同样落在 dir 下。修改 dir 后新文件写入新路径,已有文件需先迁移。

Redis 进阶速查数据更新于 2026-10-13

数据文件到底放在哪

dbfilename 决定快照文件名,dir 决定 Redis 的工作目录。两者共同定义「数据落在磁盘的什么位置」:RDB 文件、旧版单文件形态的 AOF、以及 7.0 起的 appendonlydir 目录,路径都是相对 dir 解析的。排查「数据不见了」这类问题,第一步永远是核对 dir:包管理方式安装的实例通常写在 /var/lib/redis,而随手在某个目录前台启动的实例会把文件写到当前工作目录。

基本信息

文件名参数dbfilename,默认 dump.rdb
目录参数dir,默认值取决于启动方式
覆盖范围RDB 与 AOF 相关文件都相对 dir 存放
权限要求目录必须存在,且 Redis 运行用户可读写
修改方式CONFIG SET 即时生效,CONFIG REWRITE 落盘

典型使用场景

  • 实例迁移或重新部署后,确认数据目录指向了正确位置
  • 容器化部署时确认 dir 落在挂载卷内,否则容器重建即丢数据
  • 排查磁盘写满:确认快照与 AOF 是否写在预期的分区
  • 多实例共机部署用不同 dir 隔离数据,避免互相覆盖
  • 备份脚本依据 dir 与 dbfilename 定位要拷贝的文件

查看与定位

查看与定位
redis-cli CONFIG GET dir                    # 当前工作目录
redis-cli CONFIG GET dbfilename             # 快照文件名
redis-cli CONFIG GET appenddirname          # 7.0 起 AOF 目录名(默认 appendonlydir)
ls -l /var/lib/redis/dump.rdb               # 按实际路径核对文件是否存在
redis-cli CONFIG SET dir /data/redis        # 运行中修改前,先停写并迁移已有文件
redis-cli CONFIG REWRITE                    # 确认无误后写入配置文件

不同部署方式的目录差异

部署方式典型 dir注意事项
包管理安装/var/lib/redis与文档示例常不一致,容易找不到文件
手工前台启动启动时所在目录换目录启动相当于换了一个空实例
容器部署挂载卷路径卷外路径在容器重建后全部丢失
多实例共机各自独立目录共用目录会互相覆盖快照文件
运行中修改 dir 之前必须先停写并迁移已有文件:Redis 会立刻在新目录里写快照,旧目录中的文件不会被自动搬过去,重启时按新路径加载就会表现为「数据丢失」。稳妥做法是停机迁移文件后再改配置。

易错点

  • 运行中改 dir 却不迁移文件,重启后加载不到旧数据,现场看起来就是整库丢失
  • 容器里 dir 指向挂载卷之外的路径,容器重建时数据一并消失
  • 多个实例共用同一个 dir 与 dbfilename,快照互相覆盖,恢复时拿到别人的数据
  • 目录属主或权限不是 Redis 运行用户,快照写入失败却只在日志里留下一行报错

数据来源与参考

  • Redis 官方文档:配置文件 dir / dbfilename 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌