插件窝 干货文章 redis重启后数据会丢失吗

redis重启后数据会丢失吗

持久化 数据 AOF Redis 969    来源:    2025-03-29

Redis 重启后数据是否会丢失,取决于其持久化配置。以下是详细分析及解决方案:


1. 无持久化(默认关闭)

  • 现象:若未配置任何持久化,Redis 重启后数据全部丢失
  • 检查方法:执行 CONFIG GET saveCONFIG GET appendonly,若均为空或appendonlyno,则无持久化。
  • 解决方案
    至少启用以下一种持久化方式:

2. RDB(快照持久化)

  • 原理:定期将内存数据保存为二进制快照(.rdb文件)。
  • 配置项(redis.conf): ini save 900 1 # 15分钟内至少1个key变更则触发保存 save 300 10 # 5分钟内至少10个key变更 save 60 10000 # 1分钟内至少10000个key变更 dbfilename dump.rdb # RDB文件名 dir ./ # 保存路径
  • 风险:若两次快照间发生重启,丢失最后一次快照后的数据
  • 解决方案
    • 缩短保存间隔(如 save 60 1),但会增加磁盘IO。
    • 手动执行 SAVE(阻塞)或 BGSAVE(后台保存)。

3. AOF(追加日志)

  • 原理:记录所有写操作命令(.aof文件),重启时重放日志恢复数据。
  • 配置项ini appendonly yes appendfsync everysec # 每秒同步(推荐平衡性能与安全) # appendfsync always # 每次写都同步(最安全,性能最低) # appendfsync no # 由操作系统决定(风险最高)
  • 优势:默认配置下最多丢失1秒数据
  • 优化建议
    • 定期执行 BGREWRITEAOF 压缩AOF文件。
    • 启用 aof-use-rdb-preamble(混合持久化,Redis 4+)。

4. 混合持久化(RDB+AOF)

  • 配置(Redis 4.0+): ini aof-use-rdb-preamble yes
  • 优势:结合RDB的快速恢复和AOF的低丢失率。

5. 灾难恢复建议

  1. 确保持久化文件安全
    • dir 配置为可靠路径,避免与系统盘同分区。
    • 定期备份 dump.rdbappendonly.aof 到异地。
  2. 验证持久化文件
    • 使用 redis-check-rdbredis-check-aof 工具检测文件完整性。
  3. 重启后数据加载顺序
    Redis优先加载AOF文件(若存在),其次加载RDB。

6. 特殊场景处理

  • 异常断电导致AOF损坏
    使用 redis-check-aof --fix 修复文件。
  • 云服务托管Redis
    如AWS ElastiCache默认启用RDB,需确认备份策略。

总结

配置 数据丢失风险 性能影响
无持久化 全部丢失
RDB 最后一次快照后数据
AOF(everysec) 最多1秒数据
RDB+AOF混合 极低 中高

推荐:生产环境至少启用 AOF(appendfsync everysec) 或混合持久化。