IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:RDB

共 2 篇相关文章

IT 累计浏览 3,884

深入剖析 redis RDB 持久化策略

这篇讲的是 Redis RDB 持久化的底层实现。作者从 RDB 与 AOF 的基本概念切入,随后迅速深入核心,剖析了负责持久化 IO 操作的关键数据结构 `struct rio`。 文章的亮点在于对 `rio` 结构的拆解。它巧妙地通过函数指针(如 `read`、`write`)抽象了读写行为,并用一个 `union` 联合体统一了对内存缓冲区和文件的处理,使得一套代码能同时服务于内存缓存和磁盘文件两种场景,设计上颇具巧思。 接着,作者以 `rdbSave()` 函数为主线,通过代码注释的方式,清晰地勾勒出整个 RDB 写文件的流程:从创建临时文件、初始化 `rio` 结构,到遍历每个数据库、写入操作码和数据项。这个过程不仅解释了数据是如何被序列化到磁盘的,也揭示了 BGSAVE 等后台操作的基础——主进程 `fork` 出子进程来执行这个主逻辑,从而避免阻塞服务。 对于想了解 Redis 如何将内存数据“快照”到硬盘的开发者而言,这篇文章提供了一个从数据结构到执行流程的清晰视角。

IT 累计浏览 32,227

redis源代码分析 - persistence

这篇讲的是Redis如何通过持久化机制确保数据安全。作者深入源码,拆解了全量持久化与增量持久化两大核心路径的实现细节。 全量持久化(save/bgsave)的关键在于利用操作系统的fork机制创建子进程,通过写时复制(Copy-on-Write)来实现后台快照,避免了阻塞主进程。而增量持久化(AOF)则通过追加写命令日志,并依赖定期的重写(rewrite)机制来压缩文件体积,两者在数据恢复时协同工作。 文章分析了Redis在实现这些机制时所做的巧妙权衡:比如bgsave如何最小化内存峰值,AOF重写如何生成紧凑的新日志,以及fsync策略在性能与可靠性之间的不同选择。这种对底层实现的剖析,能让读者理解Redis为何能在高性能与数据持久性之间取得平衡。