《Redis 的设计与实现》pdf分享下载
Posted it资源世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Redis 的设计与实现》pdf分享下载相关的知识,希望对你有一定的参考价值。
目录 · · · · · ·
第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 <key> 命令的实现 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
文章精彩评论:
1. Redis的性能为何强大,这是学习使用redis的一个线索性问题,很多程序员给出的回答一般仅限于“redis的数据在内存”,这种说法当然没有错误,但远远不够,不足以真正全面、体系性地回答。此处redis的I/O多路复用的函数实现就是很重要的一点,redis使用C的函数做I/O,在不同的情境时可以“智能”“自动”地选择 I/O性能最好的 多路复用函数库作为底层实现,是很重要的提高redis的I/O性能方面,进而提高服务器吞吐能力。
2.没有能力去一行一行的去阅读源码,只能拜托经典书籍,增加自己的能力。不得不说,是一本好书。此书虽然没有讲太多的redis的使用,但从底层源码及结构上分析redis。最棒的是,在很多地方的讲解会有数据结构的图示,真是一目了然。阅读起来真是毫不费力。不过读此书最好具备一定的数据结构的知识,这样读起来真是行云流水。
3.redis自2009年初版以来,经历了12个年头,几十上百个版本迭代,发展到今天,可以说是撑起了分布式缓存中间件的大半壁江山。其无人不知无人不晓,甚至是所有程序员必知必会的中间件。大部分公司也都在使用redis或者类似redis的缓存中间件,而这些类似redis的缓存中间件,也从redis身上吸取了很多经验。 我认为redis系统最具有颠覆性的一点是——单线程模型理念。这在我们多核时代的大背景下,有点反潮流。不少中间件系统都在强调多核加速,多线程编程,而为了引入了多线程模型,潜移默化地难免就要处理大量的并发场景,而并发处理是一场”噩梦“,他容易导致bug,也容易让代码变得复杂难以阅读。redis则另辟蹊径,完全采用单线程模型,一个线程把用户所有事情都干了。看似单线程系统会降低性能,而实际上,系统基本上是完全建立在memory基础之上的,缓存上操作响应时间已经非常可观了,同时dump操作都是异步进行,耗时的操作比如(rehash)也都会分批同步进行,这让redis即使是单线程模型,也能够取得惊人的性能。单机几十万QPS跟玩一样。我们在日常工作中,不要让自己的思维过于局限,妥协没有什么不好,就像redis一样,为什么一定要多线程加速呢?我舍弃了某些特性,换来了的是更清晰的代码和健壮的架构,另外,redis对内存使用效率的极致追求也是我们作为程序员需要学习的,为了提高内存使用效率,redis真是用尽了办法。比如第一章的数据结构里的压缩列表,整数数组,还有对象系统的多态设计等,甚至对缓存系统最重要的LRU算法,redis也做了近似的妥协,用来缓存更低的内存消耗。反观我们自己的系统设计,什么都是差不多就行,缺乏匠人精神和对技术极致的追求。 我第一次阅读这本书应该是在17年,当时我的思考能力远不如现在,读过这书,竟然觉得写得还挺好,给了4星的好评。现在回过头再来品品,发现这书讲的内容不够深刻,对着代码一顿乱讲,缺乏作者自己的思考和见解。对redis系统有一定的高度,但是我认为高度不够,其介于思考和就事论事中间,不好不坏,中规中矩,作者本人可能要比书上体现出来的”作者“,水平更高吧。中国人写互联网技术书籍多半都是这个样子,急于求成,东抄西搬,缺乏思考和高度,更有甚者还不知廉耻的在序中公开承认自己东搬西抄,并认为这是合理的,认为也是生存所迫。。。
ps: 此资源仅供学习交流,侵删
正版购买链接:https://item.jd.com/11486101.html
以上是关于《Redis 的设计与实现》pdf分享下载的主要内容,如果未能解决你的问题,请参考以下文章
独家下载 | 《Redis+Nginx+设计模式+Spring全家桶+Dubbo》,附 PDF & 架构书籍 下载
Hadoop技术内幕:深入解析YARN架构设计与实现原理pdf
独家下载 | 《JVM+Redis+Nginx+设计模式+Spring全家桶+Dubbo》,附 PDF & 架构书籍 下载