图片来源: https://bytebytego.com


一、AOF(Append-Only File)

  • 特点:写后日志(Write-after log),记录执行过的命令而不是数据本身

  • 工作原理

    1. Redis 先在内存中执行命令修改数据
    2. 然后将命令写入 AOF 文件
  • 优势

    • 基于事件的设计,数据恢复简单
    • 不阻塞当前写操作,性能高
  • 注意:AOF 是命令日志,恢复时需要重放日志,日志大时恢复较慢

二、RDB(Redis Database)

  • 特点:数据快照,在特定时间点记录整个数据集

  • 工作原理

    1. 主线程 fork 出 bgsave 子进程,共享内存数据
    2. bgsave 读取数据并写入 RDB 文件
    3. 主线程修改数据时,创建数据副本(Copy-on-write)
    4. 主线程对副本操作,bgsave 继续写入 RDB 文件
  • 优势

    • 数据恢复快速,只需加载快照即可
  • 限制

    • 快照频率低时可能丢失最近修改的数据

三、混合策略(Mixed Approach)

  • 生产环境常用策略

    • 使用 RDB 定时生成数据快照
    • 使用 AOF 记录快照之后的命令
  • 优势

    • 结合 RDB 快速恢复和 AOF 高可靠性,兼顾性能与安全