彻底禁用 redis 自动 rdb 快照需将 redis.conf 中所有 save 行改为 save "",并设置 appendonly no、rdb-aof-use-rdb-preamble no,删除 dump.rdb 和 appendonly.aof 文件;否则仍可能触发默认策略或 aof 写入,导致磁盘 io 上升。

怎么彻底关掉 Redis 的自动 RDB 快照
直接结论:把 save 配置清空或注释掉,再确保 appendonly no,就能禁用所有自动持久化。这不是“建议”,而是 Redis 官方定义的生效方式——只要没触发任何 save 条件,就不会 fork 子进程做 bgsave,磁盘 IO 就不会被快照拖垮。
实操上最稳妥的做法是编辑 redis.conf,找到所有 save 行(默认通常有三行):
#save 900 1#save 300 10#save 60 10000
然后统一改成:
save ""
注意不是留空行,也不是只写 save,必须是 save ""(空字符串)。Redis 解析时会把空字符串视作“无保存策略”,比注释更明确、更不易被后续配置覆盖。
为什么不能只注释 save 行就完事
常见错误是只加 # 注释掉 save 行,却忘了 Redis 启动时会加载默认内置策略——如果配置文件里没显式声明 save "",某些版本(尤其是 7.0+)会 fallback 到内置的 save 300 1 等兜底规则,IO 还是会突然飙升。
另一个坑是:改完不重启,或者只用 CONFIG SET save "" 但没执行 CONFIG REWRITE。前者改的是运行时内存配置,后者才真正落盘;下次重启还是读旧配置,等于白改。
关 RDB 之后还要顺手关 AOF 吗
要。RDB 和 AOF 是两套独立机制。即使你清空了 save,只要 appendonly yes 开着,每次写操作都会追加到 appendonly.aof 文件,照样产生磁盘 IO,尤其在高写入场景下可能比 RDB 更猛。
所以务必同步确认:
-
appendonly no(关闭 AOF) -
rdb-aof-use-rdb-preamble no(禁用混合持久化,避免隐式依赖) - 删掉残留的
dump.rdb和appendonly.aof(路径用CONFIG GET dir查,文件名用CONFIG GET dbfilename和CONFIG GET appendfilename查)
禁用后数据真的全丢吗
是的,禁用全部持久化 = 完全内存模式。Redis 崩溃、机器断电、SHUTDOWN 未带 SAVE 参数,数据就没了。这不是 bug,是设计使然——你要换来的就是零磁盘延迟、纯内存吞吐。
但别忽略一个现实细节:有些运维脚本或监控工具会偷偷调用 BGSAVE,或者你自己的代码里写了定时 SAVE。禁用配置只是关掉“自动触发”,不拦手动命令。真要万无一失,还得检查外部调用链,以及是否需要设置 stop-writes-on-bgsave-error no 防止意外报错中断服务。
说到底,禁用持久化不是“关开关”,而是明确接受“数据非持久”这个契约。IO 是下来了,责任也得扛住。










