《Redis 5设计与源码分析》笔记

多名专家联袂推荐,资深专家联合撰写,深入理解Redis 5设计精髓。本书系统讲解Redis 5设计、数据结构、底层命令实现,
以及持久化、主从复制、集群的实现。
全书分为三篇,共计22章内容。
第一篇,重点讲解了SDS、跳跃表、压缩列表、字典、整数集合、quicklist和Stream数据结构的实现。
第二篇,讲解了Redis的生命周期、命令执行的过程,键、字符串、哈希表、列表、集合、有序集合、GEO、HyperLog
和Stream相关命令的实现,需要重点了解。
第三篇,简单剖析了持久化、主从复制和集群的实现,掌握精髓。

第1章 引言
1.1 Redis 简介
1.2 Redis 5.0的新特性
1.3 Redis源码概述
1.4 Redis安装与调试
1.5 本章小结
第2章 简单动态字符串
2.1 数据结构
2.2 基本操作
2.2.1 创建字符串
2.2.2 释放字符串
2.2.3 拼接字符串
2.2.4 其余API
2.3 本章小结
第3章 跳跃表
3.1 简介
3.2 跳跃表节点与结构
3.2.1 跳跃表节点
3.2.2 跳跃表结构
3.3 基本操作
3.3.1 创建跳跃表
3.3.2 插入节点
3.3.3 删除节点
3.3.4 删除跳跃表
3.4 跳跃表的应用
3.5 本章小结
第4章 压缩列表
4.1 压缩列表的存储结构
4.2 结构体
4.3 基本操作
4.3.1 创建压缩列表
4.3.2 插入元素
4.3.3 删除元素
4.3.4 遍历压缩列表
4.4 连锁更新
4.5 本章小结
第5章 字典
5.1 基本概念
5.1.1 数组
5.1.2 Hash函数
5.1.3 Hash冲突
5.2 Redis字典的实现
5.3 基本操作
5.3.1 字典初始化
5.3.2 添加元素
5.3.3 查找元素
5.3.4 修改元素
5.3.5 删除元素
5.4 字典的遍历
5.4.1 迭代器遍历
5.4.2 间断遍历
5.5 API列表
5.6 本章小结
第6章 整数集合
6.1 数据存储
6.2 基本操作
6.2.1 查询元素
6.2.2 添加元素
6.2.3 删除元素
6.2.4 常用API
6.3 本章小结
第7章 quicklist的实现
7.1 quicklist简介
7.2 数据存储
7.3 数据压缩
7.3.1 压缩
7.3.2 解压缩
7.4 基本操作
7.4.1 初始化
7.4.2 添加元素
7.4.3 删除元素
7.4.4 更改元素
7.4.5 查找元素
7.4.6 常用API
7.5 本章小结
第8章 Stream
8.1 Stream简介
8.1.1 Stream底层结构listpack
8.1.2 Stream底层结构Ra简介
8.1.3 Stream结构
8.2 Stream底层结构listpack的实现
8.2.1 初始化
8.2.2 增删改操作
8.2.3 遍历操作
8.2.4 读取元素
8.3 Stream底层结构Ra的实现
8.3.1 初始化
8.3.2 查找元素
8.3.3 添加元素
8.3.4 删除元素
8.3.5 遍历元素
8.4 Stream结构的实现
8.4.1 初始化
8.4.2 添加元素
8.4.3 删除元素
8.4.4 查找元素
8.4.5 遍历
8.5 本章小结
第9章 命令处理生命周期
9.1 基本知识
9.1.1 对象结构体robj
9.1.2 客户端结构体client
9.1.3 服务端结构体redisServer
9.1.4 命令结构体redisCommand
9.1.5 事件处理
9.2 server启动过程
9.2.1 server初始化
9.2.2 启动监听
9.3 命令处理过程
9.3.1 命令解析
9.3.2 命令调用
9.3.3 返回结果
9.4 本章小结
第10章 键相关命令的实现
10.1 对象结构体和数据库结构体回顾
10.1.1 对象结构体redisObject
10.1.2 数据库结构体redisDb
10.2 查看键信息
10.2.1 查看键属性
10.2.2 查看键类型
10.2.3 查看键过期时间
10.3 设置键信息
10.3.1 设置键过期时间
10.3.2 删除键过期时间
10.3.3 重命名键
10.3.4 修改键最后访问
10.4 查找键
10.4.1 判断键是否存在
10.4.2 查找符合模式的键
10.4.3 遍历键
10.4.4 随机取键
10.5 操作键
10.5.1 删除键
10.5.2 序列化/反序列化键
10.5.3 移动键
10.5.4 键排序
10.6 本章小结
第11章 字符串相关命令的实现
11.1 相关命令介绍
11.2 设置字符串
11.2.1 set命令
11.2.2 mset命令
11.3 修改字符串
11.3.1 append命令
11.3.2 setrange命令
11.3.3 计数器命令
11.4 字符串获取
11.4.1 get命令
11.4.2 getset命令
11.4.3 getrange命令
11.4.4 strlen命令
11.4.5 mget命令
11.5 字符串位操作
11.5.1 setbit命令
11.5.2 getbit命令
11.5.3 bitpos命令
11.5.4 bitcount命令
11.5.5 bitop命令
11.5.6 bitfield命令
11.6 本章小结
第12章 散列表相关命令的实现
12.1 简介
12.1.1 底层存储
12.1.2 底层存储转换
12.1.3 接口说明
12.2 设置命令
12.3 读取命令
12.3.1 heists命令
12.3.2 hget/hmget命令
12.3.3 hkeys/hvals/hgetall命令
12.3.4 hlen命令
12.3.5 hscan命令
12.4 删除命令
12.5 自增命令
12.6 本章小结
第13章 列表相关命令的实现
13.1 相关命令介绍
13.1.1 命令列表
13.1.2 栈和队列命令列表
13.2 push/pop相关命令
13.2.1 push类命令的实现
13.2.2 pop类命令的实现
13.2.3 阻塞push/pop类命令的实现
13.3 获取列表数据
13.3.1 获取单个元素
13.3.2 获取多个元素
13.3.3 获取列表长度
13.4 操作列表
13.4.1 设置元素
13.4.2 插入元素
13.4.3 删除元素
13.4.4 裁剪列表
13.5 本章小结
第14章 集合相关命令的实现
14.1 相关命令介绍
14.2 集合运算
14.2.1 交集
14.2.2 并集
14.2.3 差集
14.3 本章小结
第15章 有序集合相关命令的实现
15.1 相关命令介绍
15.2 基本操作
15.2.1 添加成员
15.2.2 删除成员
15.2.3 基数统计
15.2.4 数量计算
15.2.5 计数器
15.2.6 获取排名
15.2.7 获取分值
15.2.8 遍历
15.3 批量操作
15.3.1 范围查找
15.3.2 范围删除
15.4 集合运算
15.5 本章小结
第16章 GEO相关命令
16.1 基础知识
16.2 命令实现
16.2.1 使用geoadd添加坐标
16.2.2 计算坐标的geohash
16.2.3 使用geopos查询位置经纬度
16.2.4 使用geodist计算两点距离
16.2.5 使用georadius/georadius-bymembe查询范围内元素
16.3 本章小结
第17章 HyperLogLog相关命令的实现
17.1 基本原理
17.1.1 算法演进
17.1.2 线性计数算法
17.1.3 对数计数算法
17.1.4 自适应计数算法
17.1.5 超对数计数算法
17.2 HLL Redis实现
17.2.1 HLL头对象
17.2.2 稀疏编码
17.2.3 密集编码
17.2.4 内部编码
17.2.5 编码转换
17.3 命令实现
17.3.1 添加基数
17.3.2 近似基数
17.3.3 合并基数
17.4 本章小结
第18章 数据流相关命令的实现
18.1 相关命令介绍
18.2 基本操作命令原理分析
18.2.1 添加消息
18.2.2 删除消息
18.2.3 范围查找
18.2.4 获取队列信息
18.2.5 长度统计
18.2.6 剪切消息
18.3 分组命令原理分析
18.3.1 分组管理
18.3.2 消费消息
18.3.3 响应消息
18.3.4 获取未响应消息列表
18.3.5 修改指定未响应消息归属
18.4 本章小结
第19章 其他命令
19.1 事务
19.1.1 事务简介
19.1.2 事务命令实现
19.2 发布-订阅命令实现
19.3 Lua脚本
19.3.1 初始化Lua环境
19.3.2 在Lua中调用Redis命令
19.3.3 Redis和Lua数据类型转换
19.3.4 命令实现
19.4 本章小结
第20章 持久化
20.1 RDB
20.1.1 RDB执行流程
20.1.2 RDB文件结构
20.2 AOF
20.2.1 AOF执行流程
20.2.2 AOF重写
20.3 RDB与AOF相关配置指令
20.4 本章小结
第21章 主从复制
21.1 主从复制功能实现
21.2 主从复制源码基础
21.3 slaver源码分析
21.4 master源码分析
21.5 本章小结
第22章 哨兵和集群
22.1 哨兵
22.1.1 哨兵简介
22.1.2 代码流程
22.1.3 主从切换
22.1.4 常用命令
22.2 集群
22.2.1 集群简介
22.2.2 代码流程
22.2.3 主从切换
22.2.4 副本漂移
22.2.5 分片迁移
22.2.6 通信数据包类型
22.3 本章小结

原文地址:https://www.cnblogs.com/coloz/p/13811822.html