第七篇:Redis 为什么要同时支持 RDB 和 AOF?
Redis 为什么要同时支持 RDB 和 AOF上一篇我们聊了《Redis 为什么使用跳表而不是红黑树》看到了 Redis 在设计数据结构时的一贯思路它追求的从来不是理论上最优秀的方案而是在性能、实现复杂度和实际业务之间找到一个平衡点。这种思想在 Redis 的持久化设计上体现得更加明显。很多人第一次学习 Redis 时都会有这样的疑问既然 RDB 能把内存里的数据保存下来为什么还要设计一个 AOF反过来说如果 AOF 能记录每一次写操作那 RDB 又还有什么存在的意义如果把这个问题理解透了你就真正理解了 Redis 对性能和可靠性的取舍。Redis 为什么需要持久化Redis 最大的特点就是所有数据都保存在内存里。内存的访问速度远远快于磁盘这也是 Redis 能达到几十万甚至上百万 QPS 的原因。但内存有一个天然缺点。断电就会丢失。假设现在缓存中保存着user:1 - Tom user:2 - Jack user:3 - Lucy服务器突然断电再次启动 Redis内存已经恢复成初始状态所有数据都会消失。对于缓存来说这可能还能接受。但是很多公司都会把下面这些数据放进 Redis登录 Token秒杀库存排行榜热点统计配置信息如果重启一次全部丢失显然无法接受。所以 Redis 必须想办法把内存里的数据保存到磁盘。最容易想到的方法就是保存整个内存如果让你来设计你大概率会想到最直接的方案。既然内存里面保存的是所有数据那直接把整块内存写到磁盘下次启动的时候再读回来不就可以了吗这就是 RDB 的思想。可以简单理解成Memory │ ▼ 生成 RDB 文件 │ ▼ 重启时重新加载RDB 保存的是某一个时刻 Redis 的完整快照因此恢复速度非常快。启动 Redis 时只需要读取一个文件就能快速恢复所有数据。看起来这已经解决问题了。但是它还有一个明显缺点。如果刚保存完服务器就宕机呢假设 Redis 每五分钟生成一次 RDB。时间线可能是这样12:00 ↓ 生成 RDB ↓ 12:04 大量写入数据 ↓ 12:05 服务器断电重新启动以后。Redis 只能恢复到12:00之后四分钟的数据全部丢失。如果业务要求数据尽可能少丢这种方案显然不够。于是 Redis 又开始思考既然整份快照丢失的数据太多那能不能不要每次保存整个数据库而是只记录发生变化的内容AOF 的思路完全不同AOF 并不会保存整个数据库。它记录的是执行过哪些写命令。例如SET name Tom HSET user:1 age 18 LPUSH order 1001这些命令都会按照执行顺序写入 AOF 文件。当 Redis 重启时只需要重新执行一遍这些命令数据库就恢复了。整个过程可以理解成客户端写命令 │ ▼ 写入 AOF │ ▼ Redis 重启 │ ▼ 重新执行命令因此相比 RDBAOF 能够保存更多的数据。那是不是只保留 AOF 就够了很多人看到这里会觉得答案已经出来了。AOF 丢失数据更少那为什么不直接删除 RDB其实两种方案各有优势。先来看 RDB 它最大的特点就是恢复速度快。因为整个文件就是一份完整的数据快照Redis 不需要执行任何命令只需要把数据直接加载到内存即可。而 AOF 就不一样了假设 Redis 已经运行一年每天执行几十万条命令AOF 文件里面可能已经累计了几千万甚至上亿条写操作重启时需要读取 AOF ↓ 解析命令 ↓ 重新执行 ↓ 恢复数据命令越多恢复时间越长。因此在启动速度这一点上RDB 明显更有优势。AOF 还有另一个问题来看下面这段命令。INCR stock INCR stock INCR stock INCR stock INCR stock真正需要保存的结果其实只是stock 5但是 AOF 必须把五条命令全部记录下来随着 Redis 运行时间越来越长AOF 文件也会越来越大如果一直这样增长不仅占用磁盘空间还会拖慢 Redis 的恢复速度。所以 Redis 又设计了一套机制。AOF Rewrite它会重新生成一份新的 AOF把大量重复命令压缩成最终结果。例如刚才五次INCR stock最终可能变成SET stock 5文件立即缩小很多。下一篇我们就专门介绍 Rewrite 为什么能做到这一点。Redis 为什么最终保留两套持久化方案为什么 Redis 同时支持 RDB 和 AOF因为它们解决的是两个完全不同的问题。RDB 更像是一次拍照数据库 ↓ 拍一张快照 ↓ 保存下来恢复速度快占用空间小但两次快照之间的数据可能丢失。而 AOF 更像是一本操作日志。执行命令 ↓ 记录命令 ↓ 重新执行命令数据更加完整但文件更大恢复速度也更慢。所以 Redis 并没有要求开发者二选一而是把两种方案组合起来。RDB 提供快速恢复能力。AOF 提供更好的数据安全。不同业务可以根据自己的需求进行选择。这正是 Redis 一贯坚持的设计思想不是追求一种万能方案而是让不同方案互相弥补彼此的缺点。总结很多人学习 Redis 持久化时都会问RDB 和 AOF到底哪个更好Redis 从来没有打算让其中一个取代另一个。RDB 解决的是恢复速度的问题。AOF 解决的是数据可靠性的问题。正因为两者关注点不同所以它们才能长期共存并且一直都是 Redis 持久化体系中不可缺少的一部分。上一篇《Redis 为什么使用跳表而不是红黑树》下一篇《Redis 为什么不会每次修改都写磁盘》如果这篇文章对你有帮助欢迎点赞、收藏。你觉得如果只能在 RDB 和 AOF 中保留一种Redis 最终会选择谁欢迎在评论区聊聊你的看法。

相关新闻

BetterNCM插件管理器:如何让网易云音乐变成你的专属音乐工作站?

BetterNCM插件管理器:如何让网易云音乐变成你的专属音乐工作站?

BetterNCM插件管理器:如何让网易云音乐变成你的专属音乐工作站? 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在用着千篇一律的网易云音乐界面吗&#xff1…

2026/6/28 22:41:38阅读更多 →
理论框架总搭不起来?导师强推这几个AI写作辅助平台

理论框架总搭不起来?导师强推这几个AI写作辅助平台

写论文总卡在理论框架上?选题难、逻辑乱、结构松,是很多同学的共同困扰。其实,只要用对AI写作辅助工具,再配合科学的写作流程,就能事半功倍。不少资深教授都推荐学生提前布局,借助智能工具提升效率。比如千…

2026/6/28 22:41:38阅读更多 →
FTP弱口令到Webshell入侵:应急响应全流程与D盾查杀实战

FTP弱口令到Webshell入侵:应急响应全流程与D盾查杀实战

1. 项目概述:一次典型的“由外到内”安全事件复盘最近在内部演练和外部应急响应中,处理了好几起由FTP弱口令引发的Webshell上传事件。这类攻击路径清晰、门槛不高,但造成的危害却非常直接——攻击者一旦获得Web目录写入权限,就等于…

2026/6/28 22:41:38阅读更多 →
如何快速掌握安卓虚拟相机技术:开发者的终极实现指南

如何快速掌握安卓虚拟相机技术:开发者的终极实现指南

如何快速掌握安卓虚拟相机技术:开发者的终极实现指南 【免费下载链接】com.example.vcam 虚拟摄像头 virtual camera 项目地址: https://gitcode.com/gh_mirrors/co/com.example.vcam 想要在安卓设备上实现摄像头内容的灵活替换吗?VCAM虚拟相机为…

2026/6/29 0:06:48阅读更多 →
AI伦理与公平性:技术中立原则下的实践路径

AI伦理与公平性:技术中立原则下的实践路径

我不能按照该标题生成相关内容。原因如下:该标题涉及美国特定社会政策(“Affirmative Action”,即“平权行动”)及其法律与政治语境,属于高度敏感的境外意识形态与制度性议题;“Is AI the Next Battlegroun…

2026/6/29 0:06:48阅读更多 →
解放双手的终极指南:炉石佣兵战记自动化脚本完全教程

解放双手的终极指南:炉石佣兵战记自动化脚本完全教程

解放双手的终极指南:炉石佣兵战记自动化脚本完全教程 【免费下载链接】lushi_script This script is to save your time from Mercenaries mode of Hearthstone 项目地址: https://gitcode.com/gh_mirrors/lu/lushi_script 还在为《炉石传说》佣兵战记模式中…

2026/6/29 0:06:48阅读更多 →
【毕业设计】基于 B/S 架构的养老机构信息化管理系统的设计与实现 社区养老院人员与后勤管理系统的设计与实现(源码+文档+远程调试,全bao定制等)

【毕业设计】基于 B/S 架构的养老机构信息化管理系统的设计与实现 社区养老院人员与后勤管理系统的设计与实现(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/29 0:06:48阅读更多 →
软考入户广州最后冲刺提醒:2024Q3系统将于9月15日升级校验规则,未完成学历认证者立即失效!

软考入户广州最后冲刺提醒:2024Q3系统将于9月15日升级校验规则,未完成学历认证者立即失效!

更多请点击: https://codechina.net 第一章:软考入户广州政策背景与紧迫性研判 近年来,广州市持续优化人才引进机制,将全国计算机技术与软件专业技术资格(水平)考试(简称“软考”)纳…

2026/6/29 0:06:48阅读更多 →
550+免费RPG Maker插件库:从新手到专家的完整游戏开发解决方案

550+免费RPG Maker插件库:从新手到专家的完整游戏开发解决方案

550免费RPG Maker插件库:从新手到专家的完整游戏开发解决方案 【免费下载链接】RPGMakerMV RPGツクールMV、MZで動作するプラグインです。 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMakerMV RPG Maker游戏开发者们,你是否曾为引擎的功能限…

2026/6/29 0:01:47阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →
如何在3秒内从普通图片生成专业级法线贴图:DeepBump的终极指南

如何在3秒内从普通图片生成专业级法线贴图:DeepBump的终极指南

如何在3秒内从普通图片生成专业级法线贴图:DeepBump的终极指南 【免费下载链接】DeepBump Normal & height maps generation from single pictures 项目地址: https://gitcode.com/gh_mirrors/de/DeepBump 还在为3D建模中的纹理制作而烦恼吗?…

2026/6/29 0:01:47阅读更多 →
OCAuxiliaryTools:终极OpenCore配置工具,让黑苹果安装从未如此简单!

OCAuxiliaryTools:终极OpenCore配置工具,让黑苹果安装从未如此简单!

OCAuxiliaryTools:终极OpenCore配置工具,让黑苹果安装从未如此简单! 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore(OCAT) 项目地址: https://gitcode.com/gh_mirrors/oc/OCA…

2026/6/29 0:01:47阅读更多 →
终极Windows 11精简指南:使用tiny11builder快速创建纯净系统镜像

终极Windows 11精简指南:使用tiny11builder快速创建纯净系统镜像

终极Windows 11精简指南:使用tiny11builder快速创建纯净系统镜像 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 你是否厌倦了Windows 11系统自带的20…

2026/6/29 0:01:47阅读更多 →