Redis核心原理与实践

Redis核心原理与实践
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2021-08
版次: 1
ISBN: 9787121415487
定价: 138.00
装帧: 其他
开本: 16开
纸张: 胶版纸
页数: 468页
字数: 655.200千字
  • 本书深入地分析了Redis核心功能的内部机制与实现方式,大部分内容源自对Redis源码的分析,并从中总结出实现原理。通过阅读本书,读者可以快速、轻松地了解Redis的内部运行机制。 本书首先介绍了Redis常用的数据类型的编码格式,包括字符串、列表、散列、集合、有序集合,这是Redis存储数据的基础。接着分析了Redis的事件机制,剖析了Redis事件驱动的实现原理,通过这部分内容,读者可以了解一个远程服务程序的整体架构。本书还分析了Redis持久化、主从复制、Sentinel机制、Cluster机制的实现原理,这部分内容是Redis的核心功能。在这部分内容中,本书也会延伸分析Redis中使用的UNIX机制,如UNIX网络编程、进程通信、线程同步等,并通过Redis源码展示这些UNIX机制的使用方式。 本书后介绍了Redis的高级特性,包括事务、非阻塞删除、Lua脚本、Module模块、Stream消息流,以及Redis 6提供的ACL访问控制列表、Tracking机制等,这部分内容不仅分析内部实现,还提供了详细的使用案例,帮助读者循序渐进地了解这些特性。 多年软件设计与开发经验。Redis长期使用者,熟悉Redis的核心原理与实现方式。公众号(binecy)的维护者,主要分享各类软件和框架的源码分析。 目  录 

    第1部分 数据结构与编码 

    第1章 字符串 

    1.1 redisObject 

    1.2 sds 

    1.2.1 定义 

    1.2.2 操作分析 

    1.2.3 编码 

    第2章 列表 

    2.1 ziplist 

    2.1.1 定义 

    2.1.2 字节序 

    2.1.3 操作分析 

    2.1.4 级联更新 

    2.2 quicklist 

    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.2 main函数 

    5.3 Redis初始化过程 

    第6章 事件机制 

    6.1 Redis事件机制概述 

    6.2 Redis启动时创建的事件 

    6.3 事件循环器的运行 

    第7章 epoll与网络通信 

    7.1 I/O复用模型 

    7.2 epoll网络编程 

    7.3 Redis网络通信启动过程 

    7.3.1 Redis网络服务 

    7.3.2 Redis中的epoll 

    第8章 客户端 

    8.1 定义 

    8.2 创建客户端 

    8.3 关闭客户端 

    8.4 客户端配置 

    第9章 Redis命令执行过程 

    9.1 RESP协议 

    9.2 解析请求 

    9.3 返回响应 

    9.4 执行命令 

    第10章 网络I/O线程 

    10.1 线程概述 

    10.2 互斥量概述 

    10.3 初始化I/O线程 

    10.4 解析请求 

    10.5 I/O线程主逻辑 

    10.6 返回响应 

    10.7 I/O线程状态切换 

    第3部分 持久化与复制 

    第11章 RDB 

    11.1 RDB定时逻辑 

    11.2 RDB持久化过程 

    11.2.1 fork子进程 

    11.2.2 生成RDB文件 

    11.2.3 写入RDB数据 

    11.2.4 父进程收尾 

    11.3 RDB文件加载过程 

    11.4 RDB文件分析示例 

    11.5 RDB配置 

    11.6 UNIX写时复制机制 

    11.7 UNIX I/O与缓存 

    11.7.1 内核缓冲区 

    11.7.2 I/O缓存区 

    11.7.3 sync与fdatasync 

    第12章 AOF 

    12.1 AOF定时逻辑 

    12.2 AOF持久化过程 

    12.2.1 命令传播 

    12.2.2 刷新AOF缓冲区 

    12.2.3 同步磁盘 

    12.3 AOF重写过程 

    12.3.1 fork子进程 

    12.3.2 子进程处理 

    12.3.3 父进程收尾 

    12.4 AOF文件加载过程 

    12.5 AOF文件分析示例 

    12.6 AOF配置 

    第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.5 PSYNC2 

    13.5.1 从节点重启 

    13.5.2 Cluster故障转移 

    13.6 主从复制流程 

    13.7 定时逻辑 

    13.8 主从复制配置 

    第4部分 分布式架构 

    第14章 Raft算法 

    14.1 分布式一致性的难点 

    14.2 CAP理论 

    14.3 Raft算法的设计 

    14.3.1 领导选举 

    14.3.2 日志复制 

    14.3.3 安全性 

    14.4 Redis中的Raft算法 

    第15章 Redis Sentinel 

    15.1 Redis Sentinel的应用示例 

    15.2 Redis Sentinel的实现原理 

    15.2.1 定义 

    15.2.2 Sentinel节点启动 

    15.2.3 Sentinel机制的主逻辑 

    15.2.4 Sentinel节点建立网络连接 

    15.2.5 Sentinel机制的定时消息 

    15.3 Redis Sentinel的故障转移 

    15.3.1 主观下线 

    15.3.2 客观下线 

    15.3.3 开始故障转移 

    15.3.4 选举leader节点 

    15.3.5 故障转移状态机 

    15.4 客户端交互 

    第16章 Redis Cluster 

    16.1 Redis Cluster的应用示例 

    16.1.1 搭建Redis Cluster集群 

    16.1.2 客户端重定向 

    16.1.3 槽位迁移案例 

    16.2 Redis Cluster槽位管理 

    16.2.1 定义 

    16.2.2 重定向的实现 

    16.2.3 槽位迁移的实现 

    16.3 Redis Cluster启动过程 

    16.3.1 节点启动 

    16.3.2 节点握手 

    16.3.3 指派槽位 

    16.3.4 建立主从关系 

    16.4 Redis Cluster节点通信 

    16.4.1 Gossip算法 

    16.4.2 消息定义 

    16.4.3 建立连接 

    16.4.4 握手过程 

    16.4.5 定时消息 

    16.5 Redis Cluster的故障转移 

    16.5.1 节点下线 

    16.5.2 选举过程 

    16.5.3 从节点晋升 

    16.5.4 更新集群信息 

    16.5.5 建立主从关系 

    第5部分 高级特性 

    第17章 事务 

    17.1 事务的应用示例 

    17.2 事务的实现原理 

    17.2.1 WATCH命令的实现 

    17.2.2 MULTI、EXEC命令的实现 

    第18章 非阻塞删除 

    18.1 UNLINK命令的实现原理 

    18.2 后台线程 

    18.2.1 条件变量 

    18.2.2 后台线程的实现 

    第19章 内存管理 

    19.1 动态内存分配器 

    19.1.1 内存分配器概述 

    19.1.2 Jemalloc设计概述 

    19.1.3 碎片整理机制 

    19.2 数据过期机制 

    19.2.1 定时删除 

    19.2.2 惰性删除 

    19.3 数据淘汰机制 

    19.3.1 LRU时间戳 

    19.3.2 LFU计数 

    19.3.3 数据淘汰算法 

    第20章 Redis Stream 

    20.1 Redis Stream的应用示例 

    20.1.1 添加、读取消息 

    20.1.2 消费组 

    20.1.3 ACK确认 

    20.1.4 删除消息 

    20.2 Stream的实现原理 

    20.2.1 listpack结构 

    20.2.2 Rax结构 

    20.2.3 Stream结构 

    20.2.4 Stream持久化与复制 

    第21章 访问控制列表ACL 

    21.1 ACL的应用示例 

    21.1.1 创建用户 

    21.1.2 可执行命令授权 

    21.1.3 可访问键授权 

    21.1.4 Pub/Sub频道授权 

    21.2 ACL的实现原理 

    21.2.1 定义 

    21.2.2 初始化ACL环境 

    21.2.3 用户规则设置 

    21.2.4 用户权限检查 

    第22章 Redis Tracking 

    22.1 Redis Tracking的应用示例 

    22.1.1 基本应用 

    22.1.2 广播模式 

    22.1.3 OPTIN、OPTOUT、NOLOOP 

    22.1.4 转发模式 

    22.2 Redis Tracking的实现原理 

    22.2.1 RESP3协议 

    22.2.2 开启Redis Tracking 

    22.2.3 记录查询键 

    22.2.4 非广播模式下发送失效消息 

    22.2.5 广播模式下发送失效消息 

    22.2.6 清除记录键 

    第23章 Lua脚本 

    23.1 Lua脚本的应用示例 

    23.1.1 使用EVAL命令 

    23.1.2 redis.call函数 

    23.1.3 类型转换 

    23.1.4 使用Lua实现数据类型 

    23.1.5 脚本超时 

    23.2 Lua脚本的实现原理 

    23.2.1 Lua与C语言交互 

    23.2.2 Redis中的Lua 

    第24章 Redis Module 

    24.1 Module的应用示例 

    24.1.1 使用Module实现数据类型 

    24.1.2 Module API 

    24.1.3 Module的特性 

    24.2 Module的实现原理 

    24.2.1 C语言动态库 

    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 自定义数据类型
  • 内容简介:
    本书深入地分析了Redis核心功能的内部机制与实现方式,大部分内容源自对Redis源码的分析,并从中总结出实现原理。通过阅读本书,读者可以快速、轻松地了解Redis的内部运行机制。 本书首先介绍了Redis常用的数据类型的编码格式,包括字符串、列表、散列、集合、有序集合,这是Redis存储数据的基础。接着分析了Redis的事件机制,剖析了Redis事件驱动的实现原理,通过这部分内容,读者可以了解一个远程服务程序的整体架构。本书还分析了Redis持久化、主从复制、Sentinel机制、Cluster机制的实现原理,这部分内容是Redis的核心功能。在这部分内容中,本书也会延伸分析Redis中使用的UNIX机制,如UNIX网络编程、进程通信、线程同步等,并通过Redis源码展示这些UNIX机制的使用方式。 本书后介绍了Redis的高级特性,包括事务、非阻塞删除、Lua脚本、Module模块、Stream消息流,以及Redis 6提供的ACL访问控制列表、Tracking机制等,这部分内容不仅分析内部实现,还提供了详细的使用案例,帮助读者循序渐进地了解这些特性。
  • 作者简介:
    多年软件设计与开发经验。Redis长期使用者,熟悉Redis的核心原理与实现方式。公众号(binecy)的维护者,主要分享各类软件和框架的源码分析。
  • 目录:
    目  录 

    第1部分 数据结构与编码 

    第1章 字符串 

    1.1 redisObject 

    1.2 sds 

    1.2.1 定义 

    1.2.2 操作分析 

    1.2.3 编码 

    第2章 列表 

    2.1 ziplist 

    2.1.1 定义 

    2.1.2 字节序 

    2.1.3 操作分析 

    2.1.4 级联更新 

    2.2 quicklist 

    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.2 main函数 

    5.3 Redis初始化过程 

    第6章 事件机制 

    6.1 Redis事件机制概述 

    6.2 Redis启动时创建的事件 

    6.3 事件循环器的运行 

    第7章 epoll与网络通信 

    7.1 I/O复用模型 

    7.2 epoll网络编程 

    7.3 Redis网络通信启动过程 

    7.3.1 Redis网络服务 

    7.3.2 Redis中的epoll 

    第8章 客户端 

    8.1 定义 

    8.2 创建客户端 

    8.3 关闭客户端 

    8.4 客户端配置 

    第9章 Redis命令执行过程 

    9.1 RESP协议 

    9.2 解析请求 

    9.3 返回响应 

    9.4 执行命令 

    第10章 网络I/O线程 

    10.1 线程概述 

    10.2 互斥量概述 

    10.3 初始化I/O线程 

    10.4 解析请求 

    10.5 I/O线程主逻辑 

    10.6 返回响应 

    10.7 I/O线程状态切换 

    第3部分 持久化与复制 

    第11章 RDB 

    11.1 RDB定时逻辑 

    11.2 RDB持久化过程 

    11.2.1 fork子进程 

    11.2.2 生成RDB文件 

    11.2.3 写入RDB数据 

    11.2.4 父进程收尾 

    11.3 RDB文件加载过程 

    11.4 RDB文件分析示例 

    11.5 RDB配置 

    11.6 UNIX写时复制机制 

    11.7 UNIX I/O与缓存 

    11.7.1 内核缓冲区 

    11.7.2 I/O缓存区 

    11.7.3 sync与fdatasync 

    第12章 AOF 

    12.1 AOF定时逻辑 

    12.2 AOF持久化过程 

    12.2.1 命令传播 

    12.2.2 刷新AOF缓冲区 

    12.2.3 同步磁盘 

    12.3 AOF重写过程 

    12.3.1 fork子进程 

    12.3.2 子进程处理 

    12.3.3 父进程收尾 

    12.4 AOF文件加载过程 

    12.5 AOF文件分析示例 

    12.6 AOF配置 

    第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.5 PSYNC2 

    13.5.1 从节点重启 

    13.5.2 Cluster故障转移 

    13.6 主从复制流程 

    13.7 定时逻辑 

    13.8 主从复制配置 

    第4部分 分布式架构 

    第14章 Raft算法 

    14.1 分布式一致性的难点 

    14.2 CAP理论 

    14.3 Raft算法的设计 

    14.3.1 领导选举 

    14.3.2 日志复制 

    14.3.3 安全性 

    14.4 Redis中的Raft算法 

    第15章 Redis Sentinel 

    15.1 Redis Sentinel的应用示例 

    15.2 Redis Sentinel的实现原理 

    15.2.1 定义 

    15.2.2 Sentinel节点启动 

    15.2.3 Sentinel机制的主逻辑 

    15.2.4 Sentinel节点建立网络连接 

    15.2.5 Sentinel机制的定时消息 

    15.3 Redis Sentinel的故障转移 

    15.3.1 主观下线 

    15.3.2 客观下线 

    15.3.3 开始故障转移 

    15.3.4 选举leader节点 

    15.3.5 故障转移状态机 

    15.4 客户端交互 

    第16章 Redis Cluster 

    16.1 Redis Cluster的应用示例 

    16.1.1 搭建Redis Cluster集群 

    16.1.2 客户端重定向 

    16.1.3 槽位迁移案例 

    16.2 Redis Cluster槽位管理 

    16.2.1 定义 

    16.2.2 重定向的实现 

    16.2.3 槽位迁移的实现 

    16.3 Redis Cluster启动过程 

    16.3.1 节点启动 

    16.3.2 节点握手 

    16.3.3 指派槽位 

    16.3.4 建立主从关系 

    16.4 Redis Cluster节点通信 

    16.4.1 Gossip算法 

    16.4.2 消息定义 

    16.4.3 建立连接 

    16.4.4 握手过程 

    16.4.5 定时消息 

    16.5 Redis Cluster的故障转移 

    16.5.1 节点下线 

    16.5.2 选举过程 

    16.5.3 从节点晋升 

    16.5.4 更新集群信息 

    16.5.5 建立主从关系 

    第5部分 高级特性 

    第17章 事务 

    17.1 事务的应用示例 

    17.2 事务的实现原理 

    17.2.1 WATCH命令的实现 

    17.2.2 MULTI、EXEC命令的实现 

    第18章 非阻塞删除 

    18.1 UNLINK命令的实现原理 

    18.2 后台线程 

    18.2.1 条件变量 

    18.2.2 后台线程的实现 

    第19章 内存管理 

    19.1 动态内存分配器 

    19.1.1 内存分配器概述 

    19.1.2 Jemalloc设计概述 

    19.1.3 碎片整理机制 

    19.2 数据过期机制 

    19.2.1 定时删除 

    19.2.2 惰性删除 

    19.3 数据淘汰机制 

    19.3.1 LRU时间戳 

    19.3.2 LFU计数 

    19.3.3 数据淘汰算法 

    第20章 Redis Stream 

    20.1 Redis Stream的应用示例 

    20.1.1 添加、读取消息 

    20.1.2 消费组 

    20.1.3 ACK确认 

    20.1.4 删除消息 

    20.2 Stream的实现原理 

    20.2.1 listpack结构 

    20.2.2 Rax结构 

    20.2.3 Stream结构 

    20.2.4 Stream持久化与复制 

    第21章 访问控制列表ACL 

    21.1 ACL的应用示例 

    21.1.1 创建用户 

    21.1.2 可执行命令授权 

    21.1.3 可访问键授权 

    21.1.4 Pub/Sub频道授权 

    21.2 ACL的实现原理 

    21.2.1 定义 

    21.2.2 初始化ACL环境 

    21.2.3 用户规则设置 

    21.2.4 用户权限检查 

    第22章 Redis Tracking 

    22.1 Redis Tracking的应用示例 

    22.1.1 基本应用 

    22.1.2 广播模式 

    22.1.3 OPTIN、OPTOUT、NOLOOP 

    22.1.4 转发模式 

    22.2 Redis Tracking的实现原理 

    22.2.1 RESP3协议 

    22.2.2 开启Redis Tracking 

    22.2.3 记录查询键 

    22.2.4 非广播模式下发送失效消息 

    22.2.5 广播模式下发送失效消息 

    22.2.6 清除记录键 

    第23章 Lua脚本 

    23.1 Lua脚本的应用示例 

    23.1.1 使用EVAL命令 

    23.1.2 redis.call函数 

    23.1.3 类型转换 

    23.1.4 使用Lua实现数据类型 

    23.1.5 脚本超时 

    23.2 Lua脚本的实现原理 

    23.2.1 Lua与C语言交互 

    23.2.2 Redis中的Lua 

    第24章 Redis Module 

    24.1 Module的应用示例 

    24.1.1 使用Module实现数据类型 

    24.1.2 Module API 

    24.1.3 Module的特性 

    24.2 Module的实现原理 

    24.2.1 C语言动态库 

    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 自定义数据类型
查看详情
12
相关图书 / 更多
Redis核心原理与实践
Re : 从零开始的异世界生活. 21(系列销量已突破700万册,“贤者之塔”篇开启)
温玥 译;[日]大塚真一郎 绘;天闻角川 出品;[日]长月达平
Redis核心原理与实践
Revit建筑方案与结构分析 2021版
郑贵超
Redis核心原理与实践
React学习手册(第二版)
[美]亚历克斯·班克斯;[美]伊夫·波尔切洛;安道
Redis核心原理与实践
Revit建筑结构模型创建与应用协同
宋强
Redis核心原理与实践
RevitMEP设备建模教程
王华康 著
Redis核心原理与实践
Revit 建筑信息模型(BIM)技术应用(袁志阳)
袁志阳 主编
Redis核心原理与实践
Revit 2021中文版从入门到精通
胡仁喜 刘昌丽
Redis核心原理与实践
Re : 从零开始的异世界生活:官方精选漫画集:1-3(漫画)首刷赠纸卡3张,长月达平异世界漫画
[日]长月达平 原作;刘晨 译;天闻角川 出品
Redis核心原理与实践
Revit建筑与结构设计
肖鹏、蔡汶青、夏姗姗 著
Redis核心原理与实践
Revit+VR建筑设计实操实战思维课堂
优路教育BIM教学教研中心 著
Redis核心原理与实践
Redis入门指南 第3版
李子骅
Redis核心原理与实践
Redis 6 开发与实战
张云河 王硕
您可能感兴趣 / 更多
Redis核心原理与实践
低碳雅思系列:口语突破
梁国斌、刘柳 编