店铺推荐
【推荐语】
"新版本:基于Redis 6.0.9,分析了Redis近期新特性,如Redis 6的ACL、Tracking等机制。

重实践:本书在对应知识点的基础上提供了详细的应用示例,帮助读者循序渐进、由浅到深地学习和理解Redis近期新特性。

易掌握:本书总结了Redis各个核心功能的实现原理,并以适量图文,对Redis源码及其实现原理进行详细分析,向读者展示Redis核心功能的设计思想和实现流程。

可扩展:本书由Redis延展出了两方面内容:一是Redis中使用的UNIX机制,二是如何通过Redis实现一个分布式系统,主要是Sentinel、Cluster机制的实现原理。"
【作者】
梁国斌,后端高级开发,源码爱好者,对Netty、Spring、Redis、Kafka等中间件有深入研究,目前维护一个技术公众号,欢迎关注交流。
【内容】
本书深入地分析了Redis核心功能的内部机制与实现方式,大部分内容源自对Redis源码的分析,并从中总结出实现原理。通过阅读本书,读者可以快速、轻松地了解Redis的内部运行机制。
本书首先介绍了Redis常用的数据类型的编码格式,包括字符串、列表、散列、集合、有序集合,这是Redis存储数据的基础。接着分析了Redis的事件机制,剖析了Redis事件驱动的实现原理,通过这部分内容,读者可以了解一个远程服务程序的整体架构。本书还分析了Redis持久化、主从复制、Sentinel机制、Cluster机制的实现原理,这部分内容是Redis的核心功能。在这部分内容中,本书也会延伸分析Redis中使用的UNIX机制,如UNIX网络编程、进程通信、线程同步等,并通过Redis源码展示这些UNIX机制的使用方式。
本书最后介绍了Redis的高级特性,包括事务、非阻塞删除、Lua脚本、Module模块、Stream消息流,以及Redis6提供的ACL访问控制列表、Tracking机制等,这部分内容不仅分析内部实现,还提供了详细的使用案例,帮助读者循序渐进地了解这些特性。
【目录】
第1部分数据结构与编码
第1章字符串
1.1redisObject
1.2sds
1.2.1定义
1.2.2操作分析
1.2.3编码
第2章列表
2.1ziplist
2.1.1定义
2.1.2字节序
2.1.3操作分析
2.1.4级联更新
2.2quicklist
2.2.1定义
2.2.2操作分析
2.2.3编码
第3章散列
3.1字典
3.1.1定义
3.1.2操作分析
3.1.3扩容
3.1.4缩容
3.1.5编码
3.2数据库
第4章集合
4.1无序集合
4.1.1定义
4.1.2操作分析
4.1.3编码
4.2有序集合
4.2.1定义
4.2.2操作分析
4.2.3编码
第2部分事件机制与命令执行
第5章Redis启动过程
5.1服务器定义
5.2main函数
5.3Redis初始化过程
第6章事件机制
6.1Redis事件机制概述
6.2Redis启动时创建的事件
6.3事件循环器的运行
第7章epoll与网络通信
7.1I/O复用模型
7.2epoll网络编程
7.3Redis网络通信启动过程
7.3.1Redis网络服务
7.3.2Redis中的epoll
第8章客户端
8.1定义
8.2创建客户端
8.3关闭客户端
8.4客户端配置
第9章Redis命令执行过程
9.1RESP协议
9.2解析请求
9.3返回响应
9.4执行命令
第10章网络I/O线程
10.1线程概述
10.2互斥量概述
10.3初始化I/O线程
10.4解析请求
10.5I/O线程主逻辑
10.6返回响应
10.7I/O线程状态切换
第3部分持久化与复制
第11章RDB
11.1RDB定时逻辑
11.2RDB持久化过程
11.2.1fork子进程
11.2.2生成RDB文件
11.2.3写入RDB数据
11.2.4父进程收尾
11.3RDB文件加载过程
11.4RDB文件分析示例
11.5RDB配置
11.6UNIX写时复制机制
11.7UNIXI/O与缓存
11.7.1内核缓冲区
11.7.2I/O缓存区
11.7.3sync与fdatasync
第12章AOF
12.1AOF定时逻辑
12.2AOF持久化过程
12.2.1命令传播
12.2.2刷新AOF缓冲区
12.2.3同步磁盘
12.3AOF重写过程
12.3.1fork子进程
12.3.2子进程处理
12.3.3父进程收尾
12.4AOF文件加载过程
12.5AOF文件分析示例
12.6AOF配置
第13章主从复制
13.1流程概述
13.2主从握手流程
13.2.1处理REPLICAOF命令
13.2.2主从连接
13.2.3握手流程
13.3从节点同步流程
13.3.1发送PSYNC命令
13.3.2部分同步
13.3.3全量同步
13.4主节点同步流程
13.4.1处理PSYNC命令
13.4.2全量同步
13.4.3部分同步
13.4.4部分同步的实现细节
13.5PSYNC2
13.5.1从节点重启
13.5.2Cluster故障转移
13.6主从复制流程
13.7定时逻辑
13.8主从复制配置
第4部分分布式架构
第14章Raft算法
14.1分布式一致性的难点
14.2CAP理论
14.3Raft算法的设计
14.3.1领导选举
14.3.2日志复制
14.3.3安全性
14.4Redis中的Raft算法
第15章RedisSentinel
15.1RedisSentinel的应用示例
15.2RedisSentinel的实现原理
15.2.1定义
15.2.2Sentinel节点启动
15.2.3Sentinel机制的主逻辑
15.2.4Sentinel节点建立网络连接
15.2.5Sentinel机制的定时消息
15.3RedisSentinel的故障转移
15.3.1主观下线
15.3.2客观下线
15.3.3开始故障转移
15.3.4选举leader节点
15.3.5故障转移状态机
15.4客户端交互
第16章RedisCluster
16.1RedisCluster的应用示例
16.1.1搭建RedisCluster集群
16.1.2客户端重定向
16.1.3槽位迁移案例
16.2RedisCluster槽位管理
16.2.1定义
16.2.2重定向的实现
16.2.3槽位迁移的实现
16.3RedisCluster启动过程
16.3.1节点启动
16.3.2节点握手
16.3.3指派槽位
16.3.4建立主从关系
16.4RedisCluster节点通信
16.4.1Gossip算法
16.4.2消息定义
16.4.3建立连接
16.4.4握手过程
16.4.5定时消息
16.5RedisCluster的故障转移
16.5.1节点下线
16.5.2选举过程
16.5.3从节点晋升
16.5.4更新集群信息
16.5.5建立主从关系
第5部分高级特性
第17章事务
17.1事务的应用示例
17.2事务的实现原理
17.2.1WATCH命令的实现
17.2.2MULTI、EXEC命令的实现
第18章非阻塞删除
18.1UNLINK命令的实现原理
18.2后台线程
18.2.1条件变量
18.2.2后台线程的实现
第19章内存管理
19.1动态内存分配器
19.1.1内存分配器概述
19.1.2Jemalloc设计概述
19.1.3碎片整理机制
19.2数据过期机制
19.2.1定时删除
19.2.2惰性删除
19.3数据淘汰机制
19.3.1LRU时间戳
19.3.2LFU计数
19.3.3数据淘汰算法
第20章RedisStream
20.1RedisStream的应用示例
20.1.1添加、读取消息
20.1.2消费组
20.1.3ACK确认
20.1.4删除消息
20.2Stream的实现原理
20.2.1listpack结构
20.2.2Rax结构
20.2.3Stream结构
20.2.4Stream持久化与复制
第21章访问控制列表ACL
21.1ACL的应用示例
21.1.1创建用户
21.1.2可执行命令授权
21.1.3可访问键授权
21.1.4Pub/Sub频道授权
21.2ACL的实现原理
21.2.1定义
21.2.2初始化ACL环境
21.2.3用户规则设置
21.2.4用户权限检查
第22章RedisTracking
22.1RedisTracking的应用示例
22.1.1基本应用
22.1.2广播模式
22.1.3OPTIN、OPTOUT、NOLOOP
22.1.4转发模式
22.2RedisTracking的实现原理
22.2.1RESP3协议
22.2.2开启RedisTracking
22.2.3记录查询键
22.2.4非广播模式下发送失效消息
22.2.5广播模式下发送失效消息
22.2.6清除记录键
第23章Lua脚本
23.1Lua脚本的应用示例
23.1.1使用EVAL命令
23.1.2redis.call函数
23.1.3类型转换
23.1.4使用Lua实现数据类型
23.1.5脚本超时
23.2Lua脚本的实现原理
23.2.1Lua与C语言交互
23.2.2Redis中的Lua
第24章RedisModule
24.1Module的应用示例
24.1.1使用Module实现数据类型
24.1.2ModuleAPI
24.1.3Module的特性
24.2Module的实现原理
24.2.1C语言动态库
24.2.2定义
24.2.3初始化Module的执行环境
24.2.4加载Module
24.2.5创建Module命令
24.2.6内存自动管理
24.2.7调用Redis命令
24.2.8自定义数据类型
返回顶部