数据文件到底放在哪
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 会立刻在新目录里写快照,旧目录中的文件不会被自动搬过去,重启时按新路径加载就会表现为「数据丢失」。稳妥做法是停机迁移文件后再改配置。