当前位置: 首页 > news >正文

Redis 持久化机制

Redis 持久化机制

Redis 提供 两种持久化方案 来保证数据安全:

  1. RDB(Redis Database Snapshot)快照存储,定期保存整个数据到磁盘。
  2. AOF(Append Only File)日志存储,记录每个写操作,支持数据恢复。

此外,还可以 混合使用 RDB 和 AOF,兼顾性能与安全性。


1. RDB(快照持久化)

📌 机制

  • 在指定时间间隔 内,将 内存数据二进制快照 形式保存到磁盘。
  • Redis 崩溃重启后,可以 加载 RDB 文件恢复数据
  • RDB 文件 默认存储路径
    /var/lib/redis/dump.rdb
    

📌 配置 RDB

redis.conf 中:

save 900 1    # 900秒(15分钟)内有1次写操作,触发快照
save 300 10   # 300秒(5分钟)内有10次写操作,触发快照
save 60 10000 # 60秒(1分钟)内有10000次写操作,触发快照

🚀 优化建议

  • 数据不频繁变更 → 适合使用 RDB
  • 定期备份,减少数据丢失

📌 RDB 手动触发

命令作用
SAVE同步保存(阻塞 Redis,影响性能)
BGSAVE异步保存(fork 子进程执行,不影响主线程)

📌 RDB 恢复

  • Redis 重启时,会自动加载 dump.rdb 恢复数据
  • 手动恢复
    cp dump.rdb /var/lib/redis/
    redis-server
    

✅ RDB 优缺点

优势劣势
适合全量备份可能丢失最近数据(最后一次快照后)
恢复速度快BGSAVE 可能造成性能问题(fork 进程占用 CPU 和内存)
体积小,适合冷备份不适用于高并发写入的场景

2. AOF(Append Only File,日志持久化)

📌 机制

  • 记录每个写操作日志文件(以命令形式)。
  • 重启 Redis 时,按顺序重放日志 以恢复数据。
  • 默认 AOF 关闭,可手动开启。

📌 配置 AOF

redis.conf

appendonly yes         # 开启 AOF 持久化
appendfilename "appendonly.aof"  # AOF 文件名

📌 AOF 三种刷盘策略

配置项刷盘方式安全性性能
appendfsync always每次写入都刷盘最安全,不会丢数据最慢,影响性能
appendfsync everysec每秒刷盘一次(默认)一般丢失 1 秒数据折中,适合大部分场景
appendfsync no由操作系统决定何时刷盘可能丢失数据最快,但不安全

📌 AOF 过大时,如何压缩?

Redis 会自动重写 AOF(AOF Rewrite)

  • 合并重复操作(减少 AOF 文件大小)
  • 执行
    BGREWRITEAOF
    

📌 AOF 恢复

重启 Redis 时,会 按顺序执行 AOF,重建数据:

redis-server --appendonly yes

✅ AOF 优缺点

优势劣势
数据安全,丢失数据最少文件比 RDB 大,影响恢复速度
支持日志回放,精确恢复数据写入频繁,可能影响性能
可以手动修复(删除最后几行)比 RDB 慢,需要定期重写 AOF

3. RDB vs AOF

特性RDB(快照)AOF(日志)
数据安全可能丢失最近的数据几乎不丢失数据
磁盘占用文件小文件大(不断追加)
恢复速度(直接加载快照)(逐条执行命令)
写入性能更快(定期保存)较慢(每次写操作都记录)
适用场景适合冷备(定期备份)适合高数据安全需求

🚀 如何选择?

需求推荐方案
高性能,数据丢失可接受RDB
数据必须 99.99% 可靠AOF
希望既安全又高效混合使用 RDB + AOF

4. 混合使用 RDB + AOF

Redis 6.0+ 提供 AOF + RDB 混合模式(Hybrid AOF)。

  • 启动时优先加载 RDB,提升恢复速度
  • 增量数据使用 AOF 记录,保证数据安全

📌 开启混合持久化

redis.conf

aof-use-rdb-preamble yes

📌 优点

  • 恢复更快(减少 AOF 重放时间)
  • 数据安全性更高
  • 兼顾 RDB 和 AOF 的优点

5. 总结

🎯 哪种持久化方式适合你?

方案适用场景
只用 RDB适用于数据不频繁变化的应用,如缓存、定期备份
只用 AOF适用于高可靠性要求的业务,如金融、订单系统
RDB + AOF(推荐)适用于大多数业务场景,保证性能 + 数据安全

🛠 最佳实践

使用 RDB 定期备份(减少磁盘 IO)
AOF 设置 everysec,减少数据丢失风险
开启 aof-use-rdb-preamble(混合模式),提高恢复速度
定期执行 BGREWRITEAOF,避免 AOF 过大

🚀 结论

  • 如果 Redis 主要用作缓存用 RDB
  • 如果 Redis 需要存储重要数据用 AOF
  • 如果想要兼顾性能和安全用 RDB + AOF 混合模式

相关文章:

  • 汇编代码中嵌入回调函数的优化说明
  • Centos7快速在线安装MySQL8.0最新版本教程
  • MySQL WHERE 子句详解
  • 蓝桥杯嵌入式赛道复习笔记5(捕获信号发生器的PWM的波形)
  • word报告篇:python生成《蔬菜店销售数据分析报告》案例
  • Spring Boot整合Apache BookKeeper教程
  • 网络安全之前端学习(HTML篇)
  • Leetcode322-零钱兑换
  • 如何在 WordPress 中重新生成永久链接?
  • HarmonyOS next性能优化:多维度策略与实战案例
  • Linux C/C++编程——线程
  • C++动态库中的静态调用和动态调用,延迟加载
  • Flutter 学习之旅 之 flutter 使用 connectivity_plus 进行网路状态监听(断网/网络恢复事件监听)
  • Linux操作系统实验报告单(3)文本编辑器vi/vim
  • JAVA多线程中的单例模式
  • 防止重复点击方法总结-微信小程序
  • MySQL 安装指南
  • ElasticSearch 可观测性最佳实践
  • ABAP 长文本编辑器
  • ONE Deep模型:LG AI Research的开源突破
  • 上海推动AI+文旅深度融合,MaaS平台和产业基地落地徐汇
  • 广州下调个人住房公积金贷款利率
  • 中国医药科技出版社回应发布“男性患子宫肌瘤”论文:正在核查
  • 媒体:南京秦淮区卫健委回应一医院涉嫌违规提供试管婴儿服务
  • 贵州省委省政府迅速组织开展黔西市游船倾覆事故救援工作
  • 申活观察|演出场次破纪录、入境游导游档期忙,上海文旅商“热力”拉满