易燃物汇聚 YouTube 有声书与书评
Redis 5设计与源码分析 封面

Redis 5设计与源码分析

陈雷等

8359人在读
37.5万字总字数
¥65定价

内容简介

优质的菜品需要有技艺精湛的厨师来烹饪,本书就像以优质菜品做成的“大菜”。整本书没有太多啰唆的语言,直接抽丝剥茧:从基本的数据结构类型,Redis内部每个操作命令的底层代码运行逻辑和结构,一直到整个Redis持久化技术、主从技术、分布式集群技术等,都有深入源码级别的讲解,让你领略从数据结构到整个高性能服务的全部设计之美。学以致用,读者朋友通过领会与实践来提升技术,成为一个高性能网络服务开发高手,继而深入理解缓存服务,设计自己的高性能缓存服务系统或者缓存数据库系统,应用到自己业务中去,岂非快哉!在整本书里,我也看到了一群程序员的认真执着,把每个业务数据流程图、关键代码、数据结构图都规划得详细、清晰,把自己对技术的各种理解融入书中。本书脉络清晰,适合刚入行的后端程序员、高性能服务开发者、系统运维人员、技术架构师等阅读。希望阅读本书的技术同仁都能够得到进步和提高。

读者书评

★★★★☆

本书是一本了解redis源码的书,详细讲解了redis基本数据结构到各个命令的源码及对应的代码分析,在五中value类型的基础上redis5增加了stream数据流的操作;就像作者所说文中基本涵盖了数据结构的所有,了解redis底层之后对数据结构会很大帮助,不过由于文中涉及过多算法及数据结构的知识,读起来相对比较费劲;redis的持久化处理机制RDB(从缓存中读取数据刷新到磁盘中)记录的是当前时间点的数据,AOF(以日志追加的形式保存到文件中)记录的服务器端所有操作指令,实际运用是以RDB&AOF组合的方式。redis集群、哨兵模式、主从复制都有原理说明及代码分析。是一本了解redis底层的好书。

★★★★★

受益匪浅,对数据结构,操作流程,主从切换,集群特性进行的讲解。很适合重复学习

★★★★★

前面对Redis基本数据类型、命令的使用讲解简单,易理解。 但对哨兵、集群讲解过于简单,晦涩难懂。 需要有一定基本功并结合源码自行理解和深耕。

★★★★★

精彩,建议小伙伴从command部分阅读,源码部分量力而行,当然,这里的乐趣,真的比command的介绍要精彩太多太多

★★★★★

本书赞誉 序 前言 第1章 引言1 1.1 Redis简介1 1.2 Redis 5.0的新特性2 1.3 Redis源码概述3 1.4 Redis安装与调试4 1.5 本章小结6 第2章 简单动态字符串7 2.1 数据结构7 2.2 基本操作11 2.2.1 创建字符串11 2.2.2 释放字符串12 2.2.3 拼接字符串12 2.2.4 其余API15 2.3 本章小结15 第3章 跳跃表17 3.1 简介17 3.2 跳跃表节点与结构19 3.2.1 跳跃表节点19 3.2.2 跳跃表结构20 3.3 基本操作20 3.3.1 创建跳跃表21 3.3.2 插入节点22 3.3.3 删除节点28 3.3.4 删除跳跃表30 3.4 跳跃表的应用31 3.5 本章小结32 第4章 压缩列表33 4.1 压缩列表的存储结构33 4.2 结构体35 4.3 基本操作37 4.3.1 创建压缩列表37 4.3.2 插入元素38 4.3.3 删除元素42 4.3.4 遍历压缩列表44 4.4 连锁更新44 4.5 本章小结45 第5章 字典47 5.1 基本概念47 5.1.1 数组48 5.1.2 Hash函数49 5.1.3 Hash冲突51 5.2 Redis字典的实现52 5.3 基本操作55 5.3.1 字典初始化55 5.3.2 添加元素56 5.3.3 查找元素60 5.3.4 修改元素61 5.3.5 删除元素61 5.4 字典的遍历62 5.4.1 迭代器遍历62 5.4.2 间断遍历65 5.5 API列表70 5.6 本章小结71 第6章 整数集合72 6.1 数据存储72 6.2 基本操作75 6.2.1 查询元素75 6.2.2 添加元素78 6.2.3 删除元素82 6.2.4 常用API83 6.3 本章小结85 第7章 quicklist的实现86 7.1 quicklist简介86 7.2 数据存储87 7.3 数据压缩91 7.3.1 压缩92 7.3.2 解压缩93 7.4 基本操作94 7.4.1 初始化94 7.4.2 添加元素95 7.4.3 删除元素96 7.4.4 更改元素98 7.4.5 查找元素99 7.4.6 常用API100 7.5 本章小结101 第8章 Stream102 8.1 Stream简介102 8.1.1 Stream底层结构listpack103 8.1.2 Stream底层结构Rax简介104 8.1.3 Stream结构108 8.2 Stream底层结构listpack的实现112 8.2.1 初始化112 8.2.2 增删改操作112 8.2.3 遍历操作113 8.2.4 读取元素113 8.3 Stream底层结构Rax的实现114 8.3.1 初始化114 8.3.2 查找元素114 8.3.3 添加元素116 8.3.4 删除元素118 8.3.5 遍历元素120 8.4 Stream结构的实现123 8.4.1 初始化124 8.4.2 添加元素124 8.4.3 删除元素125 8.4.4 查找元素128 8.4.5 遍历129 8.5 本章小结131 第9章 命令处理生命周期132 9.1 基本知识132 9.1.1 对象结构体robj132 9.1.2 客户端结构体client136 9.1.3 服务端结构体redisServer138 9.1.4 命令结构体redisCommand139 9.1.5 事件处理141 9.2 server启动过程149 9.2.1 server初始化149 9.2.2 启动监听152 9.3 命令处理过程155 9.3.1 命令解析156 9.3.2 命令调用159 9.3.3 返回结果161 9.4 本章小结163 第10章 键相关命令的实现164 10.1 对象结构体和数据库结构体回顾164 10.1.1 对象结构体redisObject164 10.1.2 数据库结构体redisDb166 10.2 查看键信息166 10.2.1 查看键属性166 10.2.2 查看键类型169 10.2.3 查看键过期时间170 10.3 设置键信息171 10.3.1 设置键过期时间171 10.3.2 删除键过期时间172 10.3.3 重命名键173 10.3.4 修改键最后访问173 10.4 查找键174 10.4.1 判断键是否存在174 10.4.2 查找符合模式的键175 10.4.3 遍历键176 10.4.4 随机取键177 10.5 操作键178 10.5.1 删除键178 10.5.2 序列化/反序列化键182 10.5.3 移动键183 10.5.4 键排序185 10.6 本章小结187 第11章 字符串相关命令的实现188 11.1 相关命令介绍188 11.2 设置字符串189 11.2.1 set命令189 11.2.2 mset命令195 11.3 修改字符串196 11.3.1 append命令196 11.3.2 setrange命令197 11.3.3 计数器命令197 11.4 字符串获取199 11.4.1 get命令199 11.4.2 getset命令199 11.4.3 getrange命令199 11.4.4 strlen命令200 11.4.5 mget命令201 11.5 字符串位操作201 11.5.1 setbit命令201 11.5.2 getbit命令203 11.5.3 bitpos命令203 11.5.4 bitcount命令205 11.5.5 bitop命令208 11.5.6 bitfield命令209 11.6 本章小结212 第12章 散列表相关命令的实现213 12.1 简介213 12.1.1 底层存储213 12.1.2 底层存储转换215 12.1.3 接口说明215 12.2 设置命令216 12.3 读取命令217 12.3.1 hexists命令218 12.3.2 hget/hmget命令218 12.3.3 hkeys/hvals/hgetall命令219 12.3.4 hlen命令220 12.3.5 hscan命令220 12.4 删除命令221 12.5 自增命令222 12.6 本章小结224 第13章 列表相关命令的实现225 13.1 相关命令介绍225 13.1.1 命令列表225 13.1.2 栈和队列命令列表226 13.2 push/pop相关命令228 13.2.1 push类命令的实现228 13.2.2 pop类命令的实现229 13.2.3 阻塞push/pop类命令的实现230 13.3 获取列表数据234 13.3.1 获取单个元素234 13.3.2 获取多个元素235 13.3.3 获取列表长度236 13.4 操作列表236 13.4.1 设置元素237 13.4.2 插入元素237 13.4.3 删除元素238 13.4.4 裁剪列表239 13.5 本章小结240 第14章 集合相关命令的实现241 14.1 相关命令介绍241 14.2 集合运算254 14.2.1 交集254 14.2.2 并集258 14.2.3 差集260 14.3 本章小结263 第15章 有序集合相关命令的实现264 15.1 相关命令介绍264 15.2 基本操作272 15.2.1 添加成员272 15.2.2 删除成员275 15.2.3 基数统计276 15.2.4 数量计算277 15.2.5 计数器279 15.2.6 获取排名279 15.2.7 获取分值279 15.2.8 遍历280 15.3 批量操作280 15.3.1 范围查找280 15.3.2 范围删除283 15.4 集合运算284 15.5 本章小结284 第16章 GEO相关命令285 16.1 基础知识285 16.2 命令实现288 16.2.1 使用geoadd添加坐标288 16.2.2 计算坐标的geohash291 16.2.3 使用geopos查询位置经纬度292 16.2.4 使用geodist计算两点距离295 16.2.5 使用georadius/georadius-bymembe查询范围内元素295 16.3 本章小结297 第17章 HyperLogLog相关命令的实现298 17.1 基本原理298 17.1.1 算法演进299 17.1.2 线性计数算法299 17.1.3 对数计数算法300 17.1.4 自适应计数算法302 17.1.5 超对数计数算法302 17.2 HLL Redis实现302 17.2.1 HLL头对象303 17.2.2 稀疏编码304 17.2.3 密集编码306 17.2.4 内部编码308 17.2.5 编码转换309 17.3 命令实现310 17.3.1 添加基数310 17.3.2 近似基数311 17.3.3 合并基数313 17.4 本章小结314 第18章 数据流相关命令的实现315 18.1 相关命令介绍315 18.2 基本操作命令原理分析323 18.2.1 添加消息323 18.2.2 删除消息325 18.2.3 范围查找326 18.2.4 获取队列信息327 18.2.5 长度统计327 18.2.6 剪切消息328 18.3 分组命令原理分析328 18.3.1 分组管理328 18.3.2 消费消息330 18.3.3 响应消息331 18.3.4 获取未响应消息列表331 18.3.5 修改指定未响应消息归属331 18.4 本章小结332 第19章 其他命令333 19.1 事务333 19.1.1 事务简介333 19.1.2 事务命令实现334 19.2 发布-订阅命令实现339 19.3 Lua脚本345 19.3.1 初始化Lua环境345 19.3.2 在Lua中调用Redis命令347 19.3.3 Redis和Lua数据类型转换349 19.3.4 命令实现351 19.4 本章小结356 第20章 持久化357 20.1 RDB358 20.1.1 RDB执行流程358 20.1.2 RDB文件结构359 20.2 AOF367 20.2.1 AOF执行流程368 20.2.2 AOF重写369 20.3 RDB与AOF相关配置指令372 20.4 本章小结374 第21章 主从复制375 21.1 主从复制功能实现375 21.2 主从复制源码基础378 21.3 slaver源码分析382 21.4 master源码分析388 21.5 本章小结391 第22章 哨兵和集群392 22.1 哨兵392 22.1.1 哨兵简介393 22.1.2 代码流程394 22.1.3 主从切换396 22.1.4 常用命令399 22.2 集群400 22.2.1 集群简介401 22.2.2 代码流程402 22.2.3 主从切换404 22.2.4 副本漂移406 22.2.5 分片迁移407 22.2.6 通信数据包类型409 22.3 本章小结415

★★★★★

多名专家联袂推荐,资深专家联合撰写,深入理解Redis 5设计精髓。本书系统讲解Redis 5设计、数据结构、底层命令实现,以及持久化、主从复制、集群的实现。

★★★★★

深入研究redis的原理和机制相对比较全面,就是代码贴的太多了,结合实际场景上下文更加,但对于架构师级别或者资深开发来说不是问题,反而干货很多。

★★★★★

想研究源码的话,看源码的同时搭配这本书体验会更好点,介绍比较清晰,而且跟最新的版本差别没那么大。 抛开源码,如果想深入了解 Redis 的基本数据结构,书中的介绍也很详细。如果看过《Redis 设计与实现》,那么会发现本书是一个很好的补充。更智能的 SDS、新增的 Stream 类型、HyperLogLog、GEOHASH 等等,总有一个能吸引你。 最好是带着目的去阅读,不然读着会很吃力。

★★★★★

全文将的真的很到位,由浅入深,不仅仅分析源码,更是分析了源码实现的过程和思想。总之,很值得去读的一本书,学习到的不仅仅是redis,还是数据结构+算法的书

★★☆☆☆

介绍一般,介绍用法多于源码解析。贴代码过多,对于一些redis的设计思路却一笔带过。

书籍信息

作者陈雷等
出版社机械工业出版社
出版时间2019-08-01
ISBN9787111632788
分类计算机-数据库
格式EPUB
完结状态连载中
章节数126