Skip to content
作者:daily5am创建:-更新:-
字数:预计阅读: 分钟访问量:--

Redis持久化机制

AI生成声明: 本文档由AI辅助生成,旨在提供Redis持久化机制的完整指南。

Redis提供了两种持久化方式:RDB和AOF,理解它们的原理和选择对于保证数据安全至关重要。

核心问题

RDB(Redis Database)

原理:

  • 在指定时间间隔内生成数据快照
  • 将内存中的数据写入磁盘
  • 生成.rdb文件

优点:

  • 文件紧凑,适合备份
  • 恢复速度快
  • 对性能影响小

缺点:

  • 可能丢失最后一次快照后的数据
  • 数据量大时fork过程耗时

配置:

conf
save 900 1      # 900秒内至少1个key变化
save 300 10     # 300秒内至少10个key变化
save 60 10000   # 60秒内至少10000个key变化

AOF(Append Only File)

原理:

  • 记录每个写操作
  • 追加到文件末尾
  • 重启时重新执行命令

优点:

  • 数据丢失少
  • 可读性强
  • 支持重写压缩

缺点:

  • 文件体积大
  • 恢复速度慢
  • 对性能有一定影响

配置:

conf
appendonly yes
appendfsync everysec  # always/everysec/no

AOF重写

目的:

  • 压缩AOF文件
  • 去除冗余命令
  • 提高恢复速度

触发条件:

  • 手动:BGREWRITEAOF
  • 自动:auto-aof-rewrite-percentage

持久化策略选择

1. 仅RDB

  • 适合数据不敏感场景
  • 追求高性能
  • 可接受数据丢失

2. 仅AOF

  • 数据安全性要求高
  • 可接受性能损失
  • 需要精确恢复

3. RDB + AOF

  • 推荐方案
  • RDB做定期备份
  • AOF保证数据安全
  • 兼顾性能和安全性

常见面试题

  1. RDB和AOF的区别?

    • RDB:快照,文件小,恢复快
    • AOF:日志,文件大,恢复慢
    • 数据安全性:AOF > RDB
  2. 如何选择持久化方式?

    • 数据敏感:AOF或混合
    • 性能优先:RDB
    • 平衡方案:RDB + AOF
  3. AOF重写的原理?

    • 创建子进程
    • 读取当前数据快照
    • 生成新的AOF文件
    • 替换旧文件