Skip to content

Redis设计与实现 ​

返回分类书单

分类:计算机与软件工程 / 编程语言与开发框架

书籍简介 ​

黄健宏的《Redis设计与实现》从数据结构进入数据库运行机制,解释 Redis 命令背后的内存组织、持久化、事件循环、复制与集群。适合已经使用过 Redis、希望理解性能与行为边界的开发者。

它的主要价值是建立“命令—对象编码—执行流程—持久化或复制”的联系。读者不必一开始就通读全部源码,可以先根据设计图建立结构,再进入对应实现。

版本说明 ​

本页采用作者读者服务站列出的 24 章纸书结构,配套源码为 Redis 3.0;它不同于作者早期介绍 Redis 2.6 的免费网络原始版。书单未提供 ISBN,实际藏书可据作者和目录再次确认。当前 Redis 的数据结构与复制等细节已有变化,不能把历史实现当作所有版本的事实。

作者与背景 ​

作者为黄健宏(huangz),其个人主页列有多部 Redis 著作与技术译作;本书读者服务站持续提供目录、试读和注释源码。可以从公开的设计说明、源码对应和勘误核验其专业内容,而不是仅凭“深入底层”的宣传判断。作者网站也明确区分纸书与较早网络原始版。

目标读者 ​

适合已经使用 Redis 字符串、集合或缓存、希望解释内存与执行成本的开发者。需要立即配置新版本集群的人应同时查相应官方文档;没有 C 基础也可先读设计图,但读注释源码时要补指针与内存知识。

章节介绍 ​

以下按原书 24 章逐章概括,介绍文字为本站转述。

章节核心内容
第1章 简介说明覆盖版本、章节组织和阅读方法,建立阅读源码与阅读设计的关系。
第2章 简单动态字符串解释 SDS 如何记录长度与容量,以及它相对 C 字符串的取舍。
第3章 链表介绍双向链表节点与操作,理解它如何支持灵活的顺序数据访问。
第4章 字典讨论哈希表、冲突处理和渐进式 rehash,观察扩容如何分摊成本。
第5章 跳跃表通过分层链接理解有序查找,以及它在有序集合中的作用。
第6章 整数集合解释紧凑整数存储与编码升级,关注空间节约与升级代价。
第7章 压缩列表分析连续内存编码与连锁更新,理解紧凑表示带来的时间空间权衡。
第8章 对象将逻辑类型与实际编码分开,介绍多态、引用计数和对象共享。
第9章 数据库介绍键空间、过期时间和删除策略,连接持久化与复制中的过期处理。
第10章 RDB 持久化说明快照生成、载入与文件结构,理解恢复所依赖的数据边界。
第11章 AOF 持久化介绍命令追加、刷盘与重写,比较操作记录和数据快照的思路。
第12章 事件区分文件事件和时间事件,解释事件循环如何组织服务执行。
第13章 客户端介绍客户端状态、缓冲区及创建和关闭过程。
第14章 服务器沿命令请求、周期任务和初始化过程串起单机服务器。
第15章 复制比较全量同步与部分重同步,分析复制偏移量和积压缓冲区的作用。
第16章 Sentinel介绍故障判断、领头选举和故障转移,区分主观下线与客观下线。
第17章 集群说明槽分配、重定向、迁移与故障转移,理解数据分布和请求路由。
第18章 发布与订阅分析频道、模式订阅及消息分发的数据结构与流程。
第19章 事务介绍命令入队、执行与 WATCH,讨论事务性质及其边界。
第20章 Lua 脚本解释脚本环境、执行、缓存与复制的实现联系。
第21章 排序分解 SORT 的不同选项,理解一次命令如何组合取值、比较与输出。
第22章 二进制位数组介绍位访问、计数和逻辑运算,连接位表示与算法效率。
第23章 慢查询日志说明慢查询记录的保存和管理,理解它能反映哪一段执行成本。
第24章 监视器介绍 MONITOR 客户端及命令信息分发,理解观察机制本身的工作方式。

读后感 ​

以下为本站阅读评析,用可实践的阅读目标表达收获,不代表书单提供者已经读完、任职或完成相应项目。版本未明时,评析只针对本页明确标注的主题或参考版本。

金句摘抄或阅读提炼 ​

命令只是入口,编码、执行和恢复边界决定它的代价。

这是本站原创阅读提炼,不是原书引文;没有可核对页码的原文不作逐字摘抄。

个人收获 ​

选择一个常用集合,把逻辑操作对应到书中的底层表示,再标出扩容、编码转换或持久化可能引入的额外工作。这样能把“Redis 很快”改成有条件的性能判断,并区分事务、复制和落盘各自解决的问题。

客观评价与阅读建议 ​

高层设计图便于建立整体结构,版本久远则限制了细节直接复用。压缩列表、对象编码和复制机制应与书中版本对照,不能把历史名称写成所有版本事实;建议在正在使用的版本上另查实现并验证关键假设。

推荐语(本站原创,非原书引用): 推荐给不满足于会用命令的人:从一个实际键的表示出发读设计,源码会更容易找到入口。

来源与核对入口 ​

继续阅读