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

Redis持久化机制详解

 

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅uniapp微信小程序🍅面试题软考题免费使用,还可以使用微信支付,扫码加群。由于维护成本问题得不到解决,可能将停止线上维护。

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

Java项目案例《100套》
https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html

有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。

最后再送一句:最好是学会了,而不是学废了!!

2

Redis提供两种主要的持久化方式,确保数据在服务器重启后能够恢复。理解这些机制对生产环境的数据安全至关重要。

一、RDB (Redis Database)

1. 核心原理

  • 全量快照:在特定时间点将内存中的数据完整保存到磁盘

  • 二进制压缩存储:紧凑的单文件格式,默认文件名为dump.rdb

2. 触发方式

# redis.conf配置示例
save 900 1      # 900秒(15分钟)内至少1个key变化
save 300 10     # 300秒(5分钟)内至少10个key变化
save 60 10000   # 60秒内至少10000个key变化

手动触发命令

SAVE       # 同步保存,阻塞主线程
BGSAVE     # 后台异步保存(推荐)

3. 工作流程

4. 优缺点

优势

  • 文件紧凑,恢复速度快

  • 最大化Redis性能(保存时父进程不执行I/O)

  • 适合灾难恢复

劣势

  • 可能丢失最后一次保存后的数据

  • 大数据集时fork可能耗时(尤其在虚拟机上)

二、AOF (Append Only File)

1. 核心原理

  • 日志追加:记录所有写操作命令

  • 重写机制:定期压缩日志文件大小

2. 配置选项

appendonly yes              # 启用AOF
appendfilename "appendonly.aof"
appendfsync everysec        # 同步策略:# always: 每个命令同步# everysec: 每秒同步(推荐)# no: 由操作系统决定auto-aof-rewrite-percentage 100  # 比上次重写后增长100%时触发
auto-aof-rewrite-min-size 64mb   # AOF文件至少64MB才触发重写

3. AOF重写过程

4. 优缺点

优势

  • 更高数据安全性(最多丢失1秒数据)

  • 可读性强的日志格式

  • 后台重写不影响服务

劣势

  • 文件通常比RDB大

  • 恢复速度较慢

  • AOF fsync可能影响性能

三、混合持久化(Redis 4.0+)

1. 原理

aof-use-rdb-preamble yes  # 开启混合模式

文件结构

[RDB格式的前导数据]
[AOF格式的增量命令]

2. 工作流程

  1. 执行BGSAVE生成RDB快照

  2. 后续命令以AOF格式追加

  3. 重写时生成新的RDB前导+增量AOF

3. 优势

  • 快速加载RDB部分

  • 保证数据完整性的AOF部分

  • 结合两者优点

四、生产环境配置建议

1. 数据安全优先

appendonly yes
appendfsync everysec
aof-use-rdb-preamble yes
save 300 100  # 保留基础RDB备份

2. 性能优先

appendonly no
save 900 1
save 300 10

3. 灾难恢复方案

  1. 定期将RDB文件备份到异地

    crontab -e
    # 每天备份
    0 2 * * * cp /var/lib/redis/dump.rdb /backup/redis/dump-$(date +\%F).rdb

  2. 启用AOF作为第二保障

  3. 监控持久化状态:

    redis-cli info persistence

五、故障处理技巧

1. AOF文件损坏修复

redis-check-aof --fix appendonly.aof

2. RDB文件检查

redis-check-rdb dump.rdb

3. 禁用持久化的紧急模式

redis-server --save "" --appendonly no

六、性能优化参数

# 提高BGSAVE性能
stop-writes-on-bgsave-error no
rdbcompression yes
rdbchecksum yes# 优化AOF重写
aof-rewrite-incremental-fsync yes
no-appendfsync-on-rewrite yes

七、监控关键指标

  1. RDB相关

    • rdb_last_save_time:上次成功保存时间戳

    • rdb_changes_since_last_save:上次保存后的变更数

  2. AOF相关

    • aof_current_size:当前AOF文件大小

    • aof_buffer_length:AOF缓冲区大小

    • aof_rewrite_in_progress:是否正在重写

  3. 持久化状态

    • loading:是否正在加载持久化文件

    • rdb_last_bgsave_status:上次BGSAVE状态

通过合理配置和监控这些持久化机制,可以在性能和数据安全性之间取得平衡。

3

http://www.xdnf.cn/news/10380.html

相关文章:

  • atapi!IdeReadWrite函数分析下之Send read command
  • uv:现代化的 Python 包和项目管理工具
  • 论爱情《态度》
  • 在 ABP VNext 中集成 Serilog:打造可观测、结构化日志系统
  • Java 文件操作 和 IO(4)-- Java文件内容操作(2)-- 字符流操作
  • threejsPBR材质与纹理贴图
  • 跑步前热身动作
  • redis核心知识点
  • PCIE硬件管脚顺序问题解决方案
  • C# 如何获取当前成员函数的函数名
  • C语言:字符函数和字符串函数
  • SoftThinking:让模型学会模糊思考,同时提升准确性和推理速度!!
  • 电路学习(二)之电容
  • 【LaTex公式】使用align环境实现cases文本的换行
  • Java 认识异常
  • 基于FashionMnist数据集的自监督学习(生成式自监督学习AE算法)
  • 浮点数舍入规则_编程语言对比
  • HTML实现端午节主题网站:龙舟争渡,凭吊祭江诵君赋。
  • 【后端高阶面经:架构篇】52、微服务架构:微服务是银弹吗?
  • Arm处理器调试采用jlink硬件调试器的命令使用大全
  • Python训练营打卡 Day41
  • 应急响应靶机-web3-知攻善防实验室
  • 【基础算法】模拟算法
  • Redis 持久化机制详解:RDB 与 AOF 的原理、优缺点与最佳实践
  • Java-File类基本方法使用指南
  • 【深度学习】15. Segment Anything Model (SAM) :基于提示的分割新时代
  • 题解:洛谷 P12672 「LAOI-8」近期我们注意到有网站混淆视听
  • MCP架构深度解析:从基础原理到核心设计
  • c++第三章练习题
  • 每日算法-250531