Redis设计与实现

出版日期:2014-6
ISBN:9787111464745
作者:黄健宏
页数:388页

内容概要

黄健宏 软件开发者,他喜欢函数式编程,热爱开源软件。出于对数据库的强烈兴趣,他开始阅读和分析 Redis 源代码,并对 Redis 2.6 和 Redis 3.0 的源代码进行了详细注释。他翻译并维护着 Redis 中文文档网站 www.RedisDoc .com ,编写 了 OORedis 库。除此之外,他还是《Redis in Action》一书的译者。
作者的豆瓣主页:douban.com/people/i_m_huangz/

书籍目录

第1章 引言
1
1.1 Redis版本说明
1
1.2 章节编排
1
1.3 推荐的阅读方法
4
1.4 行文规则
4
1.5 配套网站
5
第一部分 数据结构与对象
第2章 简单动态字符串
8
2.1 SDS的定义
9
2.2 SDS与C字符串的区别
10
2.3 SDS API
17
2.4 重点回顾
18
2.5 参考资料
18
第3章 链表
19
3.1 链表和链表节点的实现
20
3.2 链表和链表节点的API
21
3.3 重点回顾
22
第4章 字典
23
4.1 字典的实现
24
4.2 哈希算法
27
4.3 解决键冲突
28
4.4 rehash
29
4.5 渐进式rehash
32
4.6 字典API
36
4.7 重点回顾
37
第5章 跳跃表
38
5.1 跳跃表的实现
39
5.2 跳跃表API
44
5.3 重点回顾
45
第6章 整数集合
46
6.1 整数集合的实现
46
6.2 升级
48
6.3 升级的好处
50
6.4 降级
51
6.5 整数集合API
51
6.6 重点回顾
51
第7章 压缩列表
52
7.1 压缩列表的构成
52
7.2 压缩列表节点的构成
54
7.3 连锁更新
57
7.4 压缩列表API
59
7.5 重点回顾
59
第8章 对象
60
8.1 对象的类型与编码
60
8.2 字符串对象
64
8.3 列表对象
68
8.4 哈希对象
71
8.5 集合对象
75
8.6 有序集合对象
77
8.7 类型检查与命令多态
81
8.8 内存回收
84
8.9 对象共享
85
8.10 对象的空转时长
87
8.11 重点回顾
88
第二部分 单机数据库的实现
第9章 数据库
90
9.1 服务器中的数据库
90
9.2 切换数据库
91
9.3 数据库键空间
93
9.4 设置键的生存时间或过期时间
99
9.5 过期键删除策略
107
9.6 Redis的过期键删除策略
108
9.7 AOF、RDB和复制功能对过期键的处理
111
9.8 数据库通知
113
9.9 重点回顾
117
第10章 RDB持久化
118
10.1 RDB 文件的创建与载入
119
10.2 自动间隔性保存
121
10.3 RDB 文件结构
125
10.4 分析RDB文件
133
10.5 重点回顾
137
10.6 参考资料
137
第11章 AOF持久化
138
11.1 AOF持久化的实现
139
11.2 AOF文件的载入与数据还原
142
11.3 AOF重写
143
11.4 重点回顾
150
第12章 事件
151
12.1 文件事件
151
12.2 时间事件
156
12.3 事件的调度与执行
159
12.4 重点回顾
161
12.5 参考资料
161
第13章 客户端
162
13.1 客户端属性
163
13.2 客户端的创建与关闭
172
13.3 重点回顾
174
第14章 服务器
176
14.1 命令请求的执行过程
176
14.2 serverCron函数
184
14.3 初始化服务器
192
14.4 重点回顾
196
第三部分 多机数据库的实现
第15章 复制
198
15.1 旧版复制功能的实现
199
15.2 旧版复制功能的缺陷
201
15.3 新版复制功能的实现
203
15.4 部分重同步的实现
204
15.5 PSYNC 命令的实现
209
15.6 复制的实现
211
15.7 心跳检测
216
15.8 重点回顾
218
第16章 Sentinel
219
16.1 启动并初始化Sentinel
220
16.2 获取主服务器信息
227
16.3 获取从服务器信息
229
16.4 向主服务器和从服务器发送信息
230
16.5 接收来自主服务器和从服务器的频道信息
231
16.6 检测主观下线状态
234
16.7 检查客观下线状态
236
16.8 选举领头Sentinel
238
16.9 故障转移
240
16.10 重点回顾
243
16.11 参考资料
244
第17章 集群
245
17.1 节点
245
17.2 槽指派
251
17.3 在集群中执行命令
258
17.4 重新分片
265
17.5 ASK错误
267
17.6 复制与故障转移
273
17.7 消息
281
17.8 重点回顾
288
第四部分 独立功能的实现
第18章 发布与订阅
290
18.1 频道的订阅与退订
292
18.2 模式的订阅与退订
295
18.3 发送消息
298
18.4 查看订阅信息
300
18.5 重点回顾
303
18.6 参考资料
304
第19章 事务
305
19.1 事务的实现
306
19.2 WATCH 命令的实现
310
19.3 事务的ACID 性质
314
19.4 重点回顾
319
19.5 参考资料
320
第20章 Lua脚本
321
20.1 创建并修改Lua 环境
322
20.2 Lua 环境协作组件
327
20.3 EVAL命令的实现
329
20.4 EVALSHA 命令的实现
332
20.5 脚本管理命令的实现
333
20.6 脚本复制
336
20.7 重点回顾
342
20.8 参考资料
343
第21章 排序
344
21.1 SORT 命令的实现
345
21.2 ALPHA 选项的实现
347
21.3 ASC 选项和DESC 选项的实现
348
21.4 BY选项的实现
350
21.5 带有ALPHA 选项的BY 选项的实现
352
21.6 LIMIT 选项的实现
353
21.7 GET选项的实现
355
21.8 STORE 选项的实现
358
21.9 多个选项的执行顺序
359
21.10 重点回顾
361
第22章 二进制位数组
362
22.1 位数组的表示
363
22.2 GETBIT命令的实现
365
22.3 SETBIT 命令的实现
366
22.4 BITCOUNT 命令的实现
369
22.5 BITOP 命令的实现
376
22.6 重点回顾
377
22.7 参考资料
377
第23章 慢查询日志
378
23.1 慢查询记录的保存
380
23.2 慢查询日志的阅览和删除
382
23.3 添加新日志
383
23.4 重点回顾
385
第24章 监视器
386
24.1 成为监视器
387
24.2 向监视器发送命令信息
387
24.3 重点回顾
388

作者简介

【官方网站】
本书的官方网站 www.RedisBook.com 提供了书本试读、相关源码下载和勘误回报等服务,欢迎读者浏览和使用。
【编辑推荐】
系统而全面地描述了 Redis 内部运行机制
图示丰富,描述清晰,并给出大量参考信息,是NoSQL数据库开发人员案头必备
包括大部分Redis单机特征,以及所有多机特性
【读者评价】
这本书描述的知识点很丰富,覆盖很全,里面提到特性较多,有不少我们也没用过 :) 每个命令内部的机制的介绍很不错,很多估计也是首次有详细文档介绍。
——杨卫华(@TimYang)新浪微博技术总监
近几年Redis以其高性能、高灵活性的优点,变得越来越流行。但很多人在使用Redis时,仅仅还是停留在比较表层的功能性认识,缺乏对内部机制原理的深入理解。本书是huangz同学长期对Redis源码的阅读心得结晶,书中对Redis的各个方面都进行了详细且深入的讲解,将复杂的原理用最简单的方式为大家解构和讲解,强烈推荐给每一位Redis的使用者阅读。
—— iammutex,NoSQLFan站长,乐视网技术经理
Redis 是近些年来特别火爆的 NoSQL 之一。纵观中外各种书籍还没有一本能对 Redis 内部进行深入剖析,《Redis 设计与实现》可谓开此先河。常和作者在网上交流,知道作者为这本书付出了大量的心血。这本书行文流畅,思路清晰,详细地介绍了 Redis 源码的方方面面。无论是想学习 NoSQL、网络编程的初学者,还是源码控的进阶者,本书都会有很大的帮助。
—— 阮若夷,支付宝高级专家
【内容简介】
本书全面而完整地讲解了Redis的内部机制与实现方式,对Redis的大多数单机功能以及所有多机功能的实现原理进行了介绍,展示了这些功能的核心数据结构以及关键的算法思想,图示丰富,描述清晰,并给出大量参考信息。通过阅读本书,读者可以快速、有效地了解Redis的内部构造以及运作机制,更好、更高效地使用Redis。
本书主要分为四大部分。第一部分“数据结构与对象”介绍了Redis中的各种对象及其数据结构,并说明这些数据结构如何影响对象的功能和性能。第二部分“单机数据库的实现”对Redis实现单机数据库的方法进行了介绍,包括数据库、RDB持久化、AOF持久化、事件等。第三部分“多机数据库的实现”对Redis的Sentinel、复制、集群三个多机功能进行了介绍。第四部分“独立功能的实现”对Redis中各个相对独立的功能模块进行了介绍,涉及发布与订阅、事务、Lua脚本、排序、二进制位数组、慢查询日志、监视器等。本书作者专门维护了www.redisbook.com网站,提供带有详细注释的Redis源代码,以及本书相关的更新内容。


 Redis设计与实现下载 更多精彩书评



发布书评

 
 


精彩书评 (总计4条)

  •     作为看过这本书网络旧版,以及读过redis源码的人,我认为这本书值得一读。与旧版相比,新版完全是重写了,添加了更多更详细的内容,可以看出作者的用心与诚意。而书中并没有简单的粘贴源码或者陷入代码级别的细节中,而是将源码中重要的逻辑和思想抽象出来,深入浅出做讲解。比如第二章2.2 “SDS与C字符串的区别”, 就很好的解释了为什么redis要采用sds的设计,让人能从中学习到redis设计的思想。书中的讲解配有大量的图,一般结合具体的例子,理解起来十分容易。无论是只是想要理解redis设计的人,还是想要进一步深入阅读源码的人,这本书都是十分值得一读的。勘误P91页,9.2节的例子中:redis[2]> SET msg"another world" msg与"another world"间少了空格。P103页,PEXPIREAT的伪代码中:return0return 与0间少了空格。P185页, 以下这句话:“所以这两个属性记录的事件的精确度并不高:1. 服务器只会在打印日志,更新服务器的lru时钟,决定是否执行持久化任务,计算服务器上线时间这类对时间精度要求不高的功能上”这句话感觉没说完,应该是“...的功能上使用这两个属性”疑问:21.6节“limit选项的实现”,说会对键进行全排序后取出limit个元素。但是我印象中redis是采用了部分快排(partial quick sort)的算法,即只对一部分的元素排序。
  •     这是2016年目前读到的最有价值技术书籍!全书读完最有收获的是第一部分:数据结构与对象起初没明白为什么会讲数据结构,并且还是C语言-源代码不过还好,内容安排循序渐进,虽然第一遍看时有些吃力但是细细琢磨,配着书中丰富的图例,真是竟然看透看懂了看完第一部分,才意识到,原来后边的内容,全是基于这些数据结构实现的底层逻辑所以这一部分阅读时尽量不要跳过!并且对于把Java当主编程语言的同学绝对有很多值得学习和思考的地方!能学习到新知,并让人产生思考,绝对是一本书的价值体现!全书作者的文字表达能力虽有不是很通顺的地方,但是图例,完美地弥补了这一点图例太丰富,太直白,有时候简直比文字都好理解,这一点太佩服作者了!第二,三部分:单机/多机数据库的实现既然读懂了Redis特有的数据结构及对象组织方式,那这部分对于理解Redis数据库的实现简直是太简单了,并且读完有一种豁然开朗的感觉,假如要使用Java语言模拟实现,应该也不难!第四部分:独立功能实现全书只有这一部分有一小段儿看不懂:在BITCOUNT 命令的实现中关于variable-precison SWAR算法的原理解释虽配有文字和图例,但真是没看懂,没能全部理解!所以,全书读下来,信息量太大,关于Redis的底层实现逻辑,终于有了个透彻的理解和学习一开始以为本书会是一个实践指南类的,但是读完数据结构和数据库这两部分才明白:源码已尽显,实践其实配合书中图例已经算是在边了解底层的同时边实践了不过还是希望以后再版时,作者能加些实际生产使用的场景案例和运维相关的内容!
  •     第一时间入手,花了一个周末读完。总体来说很棒,比网站上的内容丰富了很多。亮点:1. 在源码层面,对Redis几乎所有特性都做了深入分析。2. 每个章节都有很多生动的配图,便于理解。3. 附带了注释版的Redis3.0源码,结合着看很爽。挑刺:1. 基本是讲原理,涉及实战经验较少。2. 一些章节的描述稍微有一点点啰嗦。推荐入手。

精彩短评 (总计50条)

  •     还不错
  •     比较易读的一本书,清晰明了,看完之后对redis有了一个基础的认识,以后应用中遇到问题再回来看
  •     大体看了下,使用时可以详细看,和数据库原理基本相通,有时间可以看一下数据库基础原理。
  •     写的很赞,比较深入介绍Redis的工作原理 ,对于运维的同学第8-21章一定要看。
  •     这本书用作熟悉redis很不错,适合从零开始的新人,熟悉一点的,快速翻翻也很有收获。
  •     豁然开朗,真是膜拜源码作者!
  •     精通redis
  •     本来是为应付面试读的(几次面试当中问到了好多Redis实现方面的问题:Redis如何实现expire、如何实现集群、sentinel作用、事务实现、哪类持久化更安全、各种数据结构的底层实现...), 结果在看了几章之后完全被吸引住了, 深入浅出, 读来流畅痛快, 有种"大陆侯俊杰"的感觉.
  •     在国产书里算质量很不错了,理解起来不困难,跟Redis本身设计和实现优雅也有关系。不过,不少地方读起来仍然有凑字数之感,还可以缩减
  •     确实做到了深入浅出,花了四五天才看完,真心累。越往后看越枯燥,耐着性子看完的,很有收获。
  •     配合这本书可以读读源码,深入理解redis
  •     可算是看完了(摔),发现 redis 哈希简直是 Nosql 届的奇葩,不论是从存储方式、表结构还是性能上都是特立独行的(差),然而总是有实现上需要依赖它。。。
  •     对Redis内部源码解析的不错,看完后再多读几遍源码效果更好,毕竟对码农来说源码就是最好的读物。源码面前 no magic under the hood
  •     详略得当的介绍了redis的基本原理。包括数据结构,单机和集群功能,以及部分独立的功能
  •     能够帮助全面了解Redis, 如RDB, AOF, Sentinel和Cluster等.
  •     【20161228~20170110】
  •     看完本书明白了Redis的原理。内容浅显易懂,但是python的伪代码感觉很挫。
  •     好书!强烈推荐!好久没有这种酣畅淋漓的阅读体验了(可能更多是Redis的功劳)。Redis的设计真是无比优雅!
  •     看了前几章,作者写得真心通俗易懂,得点赞!
  •     对于redis的数据结构讲的非常详细
  •     哥们有点大陆版侯捷的意思了,加油。
  •     深入浅出,感觉还是挺棒的
  •     恰到好处
  •     非常棒,因为个人没有需求驱动,所以看这本书足够了解redis原理,不必看代码…^_^
  •     还行,通俗易懂。里面有一些设计思想还是很不错的。
  •     很详细,首选
  •     非常好
  •     有点泛泛而谈,需要结合源码
  •     写得很散,不过也要好处,无论你是想了解redis的使用,原理或者是想自己设计一个类似的东西都可以从这本书里找到自己需要的部分。
  •     前几章不错,后面几张没什么料,有点为了源码而源码的感觉。整体还不错,推荐吧。
  •     还不错比较深入分析的redis,弥补了redis实战的不足。
  •     阅读 redis 源码时的辅助手册。学习 redis ,个人极力推荐读源码,因为其源码读起来太舒服了,而读源码,推荐配合这本书。
  •     需要Redis用来做缓存看了需要的部分。工具书
  •     从底层实现上讲解了redis的设计思想,加深了对一些操作以及原理的理解。写的还算有条理,循序渐进的,看起来没什么压力
  •     非常好的一本书,而且redis的设计对数据结构的使用非常值得学习!
  •     适合想深入了解redis原理的读者。但想用得好,还要看其它资料。
  •     书中的源码主要是数据结构,具体的流程主要用文字和流程图表示,这点比较好,毕竟是源码解析,不是把源代码印出来。
  •     通俗易懂,大赞,真希望各类开源代码都有这么好的书解读。
  •     第四部分跳过了事务以外的章节,用到时再读
  •     本来要给四星或五星的,但是。。。。 其中读这本书有些地方不明白,翻了源代码,有些地方不清楚,也不方便查资料看懂,于是去微博请教作者(虽然作者不回答是他的义务,我没有权利去要求他回答我的问题),作者根本没有回复我。我还是自己查资料,大概清楚了,学习这事我觉得还是靠自己
  •     写的挺好的,内容清晰章节合理
  •     本书原理讲的比较多,涉及实现的地方都用伪代码表示,非常好理解,也有一定的深度。如果想了解实现细节还是要结合着源码来看。
  •     分门别类,讲得很好
  •     原理讲的较多 想看入门
  •     挺好的一本书,细节也足够多,作为看源码的辅助绝对够。有些东西感觉是作者自己想的。。有些还是看英文资料顺便搞明白的。。也不知道是redis本身相对清晰简单,还是作者的省略,总结出来的内容并不多,感觉有点啰嗦。。
  •     此书深入到数据结构层次来研究Redis的设计与实现,对我的启发非常大。
  •     讲的是如何实现...
  •     数据之美,即是结构之美~
  •     源码层面的书,讲解蛮细致。
  •     手边必备
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024