- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Redis 设计与实现 (第⼀版)
Redis 设计与实现 (第⼀版)
你正在阅读的是 《Redis 设计与实现》第⼀版 (旧版),请访问
RedisBook .com ,查看关注 Redis 3.0 、包含 多新内容的新版 《Redis 设
计与实现》。
本书的⽬标是以简明易懂的⽅式讲解 Redis 的内部运⾏机制,通过阅读本书,你可以
了解到 Redis 从数据结构到服务器构造在内的⼏乎所有知识。
第⼀部分:内部数据结构
第⼆部分:内存映射数据结构
第三部分:Redis 数据类型
第四部分:功能的实现
第五部分:内部运作机制
关于
通过捐款⽀持本书
为了保证内容的简洁性,本书会尽量以⾼抽象层次的⾓度来观察 Redis ,并将代码的
细节留给读者⾃⼰去考究。
如果读者只是对 Redis 的内部运作机制感兴趣,但并不想深⼊代码,那么只阅读本书
就⾜够了。
另⼀⽅⾯,对于需要深⼊研究 Redis 代码的读者,本书附带了⼀份 带有详细注释的
Redis 2.6 源代码 ,可以配合本书⼀并使⽤。
第⼀部分:内部数据结构
Redis 和其他很多 key-value 数据库的不同之处在于,Redis 不仅⽀持简单的字符串键
值对,它还提供了⼀系列数据结构类型值,⽐如列表、哈希、集合和有序集,并在这
些数据结构类型上定义了⼀套强⼤的 API 。
通过对不同类型的值进⾏操作,Redis 可以很轻易地完成其他只⽀持字符串键值对的
key-value 数据库很难 (或者⽆法)完成的任务。
在 Redis 的内部,数据结构类型值由⾼效的数据结构和算法进⾏⽀持,并且在 Redis
⾃⾝的构建当中,也⼤量⽤到了这些数据结构。
这⼀部分将对 Redis 内存所使⽤的数据结构和算法进⾏介绍。
简单动态字符串
sds 的⽤途
Redis 中的字符串
优化追加操作
sds 模块的 API
⼩结
双端链表
双端链表的应⽤
双端链表的实现
迭代器
⼩结
字典
字典的应⽤
字典的实现
创建新字典
添加键值对到字典
添加新元素到空⽩字典
添加新键值对时发⽣碰撞处理
添加新键值对时触发了 rehash 操作
Rehash 执⾏过程
渐进式 rehash
字典的收缩
字典其他操作
字典的迭代
⼩结
跳跃表
跳跃表的实现
跳跃表的应⽤
⼩结
第⼆部分:内存映射数据结构
虽然内部数据结构⾮常强⼤,但是创建⼀系列完整的数据结构本⾝也是⼀件相当耗费
内存的⼯作,当⼀个对象包含的元素数量并不多,或者元素本⾝的体积并不⼤时,使
⽤代价⾼昂的内部数据结构并不是最好的办法。
为了解决这⼀问题,Redis 在条件允许的情况下,会使⽤内存映射数据结构来代替内
部数据结构。
内存映射数据结构是⼀系列经过特殊编码的字节序列,创建它们所消耗的内存通常⽐
作⽤类似的内部数据结构要少得多,如果使⽤得当,内存映射数据结构可以为⽤户节
省⼤量的内存。
不过,因为内存映射数据结构的编码和操作⽅式要⽐内部数据结构要复杂得多,所以
内存映射数据结构所占⽤的 CPU 时间会⽐作⽤类似的内部数据结构要多。
这⼀部分将对 Redis ⽬前正在使⽤的两种内存映射数据结构进⾏介绍。
整数集合
整数集合的应⽤
数据结构和主要操作
intset 运⾏实例
升级
关于升级
关于元素移动
其他操作
⼩结
压缩列表
iplist 的构成
节点的构成
创建新 iplist
将节点添加到末端
将节点添加到某个/某些节点的前⾯
删除节点
遍历
查找元素、根据值定位节点
⼩结
第三部分:Redis 数据类型
既然 Redis 的键值对可以保存不同类型的值,那么很⾃然就需要对键值的类型进⾏检
查以
您可能关注的文档
- P20 Windows XP操作系统与活动目录的使用.ppt
- pads layout及router同步操作.pdf
- PADS铜的属性设置和铺铜的方法.pdf
- PageOffice版本区别和报价.pdf
- pascal文件读写操作.ppt
- PB学习之第六部关于PB控件.ppt
- PC(上位机)及PLC串行通讯协议及串口DLL之 modbus rtu 协议.doc
- PC(上位机)及PLC串行通讯协议及串口DLL之__modbus_rtu_协议.pdf
- PCB电路板及solidworks的完美结合.pdf
- PC维护常用命令.doc
- 上海海洋大学《海洋环境分析技术》课件-21化学发光分析法.pdf
- 上海海洋大学《海洋环境分析技术》课件-20分子荧光分析法.pdf
- 上海海洋大学《海洋环境分析技术》课件-22色谱分离过程.pdf
- 上海海洋大学《海洋环境分析技术》课件-25气相色谱仪与固定液.pdf
- 上海海洋大学《海洋环境分析技术》课件-24色谱定性定量方法.pdf
- 上海海洋大学《海洋环境分析技术》课件-26气相色谱检测器.pdf
- 上海海洋大学《海洋环境分析技术》课件-29液相色谱固定相与流动相.pdf
- 上海海洋大学《海洋环境分析技术》课件-27气相色谱分离条件的选择.pdf
- 上海海洋大学《海洋环境分析技术》课件-28液相色谱仪器与类型.pdf
- 上海海洋大学《海洋环境分析技术》课件-3 原子光谱和分析光谱.pdf
文档评论(0)