You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行中的Redis实例上启用AOF且不丢失数据?

如何在已有RDB持久化的Redis实例中安全启用AOF

正确的在线启用步骤(无停机+全量数据保留)

  • 直接通过redis-cli执行命令开启AOF:
    redis-cli CONFIG SET appendonly yes
    
    执行这条命令后,Redis会自动把当前内存中的所有数据(包括你之前RDB里的2GB/5GB历史数据),以Redis命令的格式写入新生成的AOF文件,完成后AOF文件就包含了从实例启动到现在的全量数据,不是只有开启AOF之后的新命令。整个过程不需要停服务,内存数据不会丢失。
  • 为了避免Redis重启后配置失效,执行命令持久化配置到redis.conf:
    redis-cli CONFIG REWRITE
    
    这条命令会把当前生效的配置(包括appendonly yes)覆盖写入配置文件,下次重启Redis时AOF会自动启用。

针对你示例场景的说明

你担心Day4故障重启后丢失Day2的5GB数据?不会发生。因为Day3执行CONFIG SET appendonly yes时,Redis已经把当时内存里的5GB数据全部写入了AOF文件,之后的500条命令也会实时追加到AOF中。重启时Redis会加载这个完整的AOF文件,所以Day2的5GB数据和Day3-4的500条命令都会被恢复,不会丢失历史数据。

为什么你最初的操作会丢失数据?

你之前停止Redis、修改配置开启AOF再重启,此时新生成的AOF文件是空的,而Redis默认在同时开启RDB和AOF时,重启会优先加载AOF文件(因为AOF数据更新更及时),所以空的AOF导致历史数据没被加载。而在线启用的方式会让Redis自动生成包含全量数据的AOF,从根源避免了这个问题。

额外说明

开启AOF后,Redis会同时保留RDB和AOF文件,日常可以继续用RDB做快照备份,AOF负责增量的命令持久化。后续重启时,Redis会自动选择AOF来恢复数据(因为AOF的数据完整性更高)。

内容的提问来源于stack exchange,提问作者Ankit Sahay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 03:55:07