改了save ""仍生成dump.rdb,是因为redis在flushall、shutdown或全量同步时会自动重写现有dump.rdb文件,即使禁用自动快照;必须删除残留dump.rdb及临时文件,并验证运行时config get save返回空、rdb_last_save_time不再更新。

不能只改 redis.conf 就算完事,必须同步清理残留文件 + 验证运行时状态,否则 RDB 仍可能意外触发。
为什么改了 save "" 还会生成 dump.rdb
常见错误是以为注释掉所有 save 行或写上 save "" 就高枕无忧。但 Redis 启动时若发现当前工作目录下已有 dump.rdb,且 dir 和 dbfilename 配置有效,它会在某些场景(如 FLUSHALL、主从全量同步)中**自动重写该文件**——哪怕你已禁用自动快照。
- 检查当前
dir配置:redis-cli config get dir - 检查当前
dbfilename:redis-cli config get dbfilename - 进入该目录,手动删除存在的
dump.rdb及其临时文件(如dump.rdb.tmp)
CONFIG SET save "" 是临时的,但有副作用
执行 CONFIG SET save "" 确实能立刻禁用 RDB 自动触发,但它不会影响已加载的配置逻辑,也不会清理磁盘文件。更关键的是:
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 该命令仅对当前进程生效,Redis 重启后恢复
redis.conf中的原始配置 - 如果之前用过
CONFIG REWRITE,而配置文件权限不足或路径未设(CONFIG GET CONFIGFILE返回空),save ""可能没被写入文件 - 执行后务必验证:
redis-cli config get save应返回1) "save" 2) ""
生产环境必须做的三件事
缺一不可,否则不是“安全关闭”,只是“假装关闭”:
- 在
redis.conf中明确写入save ""(不推荐仅注释,避免未来误启) - 确认
appendonly no和rdb-aof-use-rdb-preamble no已设置(混合持久化也要关) - 停机窗口内执行:
redis-cli shutdown nosave→ 删除dump.rdb→ 启动 → 再次确认INFO persistence | grep rdb_中rdb_bgsave_in_progress:0且rdb_last_save_time不再更新
最容易被忽略的是:即使所有配置都关了,只要 dump.rdb 文件还躺在 dir 目录里,Redis 在收到 FLUSHALL 时仍会把它当“模板”重写一遍——这不是 bug,是设计行为。










