Redis - Redis持久化(RDB+AOF)
总结
RDB - Redis DataBase
Redis会单独创建一个子进程,将数据集快照snapshot的方式写入磁盘。会记录 redis 数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,可恢复数据
优点:
- 只有一个文件 dump.rdb,恢复操作简单,容灾性好
- 性能较高,fork 子进程进行写操作,主进程继续处理命令
- 大数据集比 AOF 的恢复效率高
缺点:
- 数据安全性低,RDB 是每间隔一段时间进行持久化,若间隔期间 redis 发生故障,可能会发生数据丢失
AOF - Append only file
指所有的命令行(记录每个写操作,不记录读操作)做持久化存储,保存为 appendonly.aof 文件。
优点:
- 数据安全:aof 持久化可以配置 appendfsync 属性为 always,记录每个命令操作到 aof 文件中一次,但性能最差;
- 修复机制:即使中途服务器宕机,也可以通过 redis-check-aof 工具解决格式错误问题,但可能会有数据丢失
- AOF 机制的 rewrite 模式:AOF 文件过度膨胀,导致恢复数据耗时严重。通过rewrite,优化记录,只针对于每个key,生成一条日志
缺点:
- AOF 的持久化文件比 RDB 大,恢复速度慢
- AOF的效率也比RDB慢,因此redis默认的配置就是RDB
1. RDB (Redis DataBase)
1.1 RDB 设置
1.2 RDB 触发机制
1.3 RDB 恢复机制
1.4 RDB 优缺点
2. AOF (Append Only File)
2.1 AOF 开启
2.2 AOF 修复机制
不是100%数据恢复,而是格式恢复--即将错误aof格式修复成正确的aof格式。可能会有数据的丢失。
2.3 AOF Rewrite机制
随着redis的运行,aof会不断膨胀(对于一个key会有多条aof日志),导致通过aof恢复数据时,耗费大量不必要的时间。redis提供的解决方案是aof rewrite。根据db的内容,对于每个key,生成一条日志。aof触发的时机:
- 用户调用BGREWRITEAOF命令
- aof日志大小超过预设的限额 -- 下图表示:当aof文件100%达到64MB时,才会进行rewrite操作
AOF Rewrite源码分析:https://www.cnblogs.com/xingzc/p/6384663.html
2.4 AOF 优缺点
3. RDB vs AOF
3.1 同时开启两种持久化,会如何?
3.2 性能建议
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?