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 很快”改成有条件的性能判断,并区分事务、复制和落盘各自解决的问题。
客观评价与阅读建议
高层设计图便于建立整体结构,版本久远则限制了细节直接复用。压缩列表、对象编码和复制机制应与书中版本对照,不能把历史名称写成所有版本事实;建议在正在使用的版本上另查实现并验证关键假设。
推荐语(本站原创,非原书引用): 推荐给不满足于会用命令的人:从一个实际键的表示出发读设计,源码会更容易找到入口。
来源与核对入口
- 作者读者服务站:目录、试读与版本说明:24 章结构的主要来源。
- 配套 Redis 3.0 注释源码:深入实现时使用。
- 作者早期网络原始版:用于区分版本,不与纸书目录混用。
- 黄健宏个人主页:核对作者、技术写作与翻译方向。
继续阅读
- 书籍导读
- 书籍导读
- 书籍导读