彻底关闭redis持久化需同步操作:rdb须设save ""并删除dump.rdb;aof须config set appendonly no、删appendonly.aof、改配置为appendonly no;重启后才生效,否则残留文件会导致意外加载或启动失败。

不能只改配置文件或只执行 CONFIG SET 就算关了——RDB 和 AOF 各自有一套加载逻辑,漏掉任何一环都可能在重启时意外恢复数据或直接启动失败。
关闭 RDB:save "" 不够,必须删 dump.rdb
RDB 的关闭陷阱在于:即使你把 save 设为空,只要 dir 目录下还存在 dump.rdb,Redis 启动时就会自动加载它,不管 save 规则是否生效。
- 先确认路径:
redis-cli CONFIG GET dir和CONFIG GET dbfilename,通常默认是dump.rdb - 停服务后手动删除:
rm /path/to/dump.rdb(注意不是rm dump.rdb,要写绝对路径) - 如果之前因
stop-writes-on-bgsave-error yes导致写入被拒(redis-cli ping返回(error) MISCONF),需先CONFIG SET stop-writes-on-bgsave-error no解锁,再删文件
关闭 AOF:appendonly no 只是停写,不是卸载
CONFIG SET appendonly no 只会让 Redis 停止追加命令,但不会删文件、也不会清元信息。INFO 输出里 aof_current_size 仍非零,说明文件还在磁盘上。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 必须同步三步:
CONFIG SET appendonly no→rm $(redis-cli CONFIG GET appendfilename | tail -n1)→ 修改redis.conf中的appendonly yes为appendonly no - 否则重启时,Redis 会检测到
appendonly.aof文件存在,哪怕配置是no,也会强制加载并自动切回appendonly yes - Redis 6.0+ 对缺失 AOF 文件更敏感:若删了文件但没改配置,启动直接报错
Failed opening the AOF file: No such file or directory
验证是否真关了:别信 CONFIG GET,要看运行时和磁盘
配置返回值只是静态快照,真正起作用的是启动时的行为和残留文件是否存在。
- 连上后执行:
INFO persistence,检查rdb_bgsave_in_progress:0、aof_enabled:0、aof_rewrite_in_progress:0全为 0 - 执行:
ls -l $(redis-cli CONFIG GET dir | tail -n1),输出里不能出现dump.rdb或appendonly.aof - 最狠验证法:临时把
dir改成空目录(如/tmp/redis-empty),重启;再redis-cli dbsize应该返回(integer) 0
容器与热更场景下最容易忽略的点
Docker 或动态配置变更时,旧文件常藏在挂载卷或历史镜像层里,导致“明明关了却还加载”。
- 用
docker run启动时带--save ""参数,仅禁用 RDB 触发,不删dump.rdb,也不关 AOF - 挂载配置文件时,确保宿主机上的
redis.conf已更新appendonly no,且挂载卷里没有遗留的appendonly.aof -
CONFIG REWRITE不会清理磁盘文件,它只重写配置;AOF 文件必须手动删,且得在CONFIG SET appendonly no之后删
彻底关闭持久化不是“设个开关”,而是清理状态、清除文件、绕过启动加载逻辑的三重操作。任何一步脱节,重启后就可能回到原点。










