[套装书]基于Docker的Redis入门与实战+Redis 5设计与源码分析(2册)

作者
金华,胡书敏 陈雷 内封:陈雷 方波 黄桃 李乐 施洪宝 熊浩含 闫昌 张仕华 周生政
丛书名
出版社
机械工业出版社
ISBN
9782107261160
简要
简介
内容简介书籍计算机书籍 ---------------------------8082548 - 基于Docker的Redis入门与实战--------------------------- 本书围绕“高并发大数据”的项目需求,全面讲述分布式缓存组件Redis的基本语法、核心技术和实战技能。 本书分为13章,第1~7章主要介绍Redis入门知识、Redis基本数据类型、Redis常用命令、Redis服务器和客户端实践技巧、Redis数据库操作技巧、Redis AOF和RDB持久化操作技巧、Redis集群的搭建方式,第8~11章主要介绍Redis同MySQL和MyCAT集群的整合技巧、Redis同lua的整合技巧等,第12、13章主要介绍Redis、Spring Boot和Spring Cloud如何构建微服务应用。 ---------------------------8062442 - Redis 5设计与源码分析--------------------------- 全书主要分为三部分介绍Redis。第一部分介绍Redis5中使用的数据结构,包括动态字符串、跳跃表、压缩列表、字典、整数集合和快速链表,详细介绍其基本结构及常见操作。第二部分为本书核心篇章,首先介绍了Redis5的启动流程,命令解析流程,之后对Redis5中的命令实现进行了全面的介绍,包括键命令、字符串命令、哈希表命令、列表命令、集合及有序集合命令、地理位置相关的GEO命令、统计相关的HyperLogLog命令。第三部分,主要介绍了Redis5的一些特性及使用,包括事务、持久化、主从复制以及集群等。
目录
[套装书具体书目]
8062442 - Redis 5设计与源码分析 - 9787111632788 - 机械工业出版社 - 定价 139
8082548 - 基于Docker的Redis入门与实战 - 9787111684589 - 机械工业出版社 - 定价 79



---------------------------8082548 - 基于Docker的Redis入门与实战---------------------------


前言
第1章 构建Redis开发环境 1
1.1 Redis概述 1
1.1.1 对比传统数据库与NoSQL数据库 1
1.1.2 Redis的特点 2
1.1.3 Redis更适合以分布式集群的方式提供服务 2
1.2 了解必要的Docker技能 3
1.2.1 Docker容器、镜像和仓库 3
1.2.2 在Windows上安装Docker 3
1.2.3 Docker镜像相关的命令 4
1.2.4 Docker容器相关的命令 4
1.3 安装和配置基于Docker的Redis环境 5
1.3.1 用docker pull下载最新Redis镜像 5
1.3.2 用docker run启动Redis容器 5
1.3.3 用docker logs观察Redis启动效果 6
1.3.4 通过docker exec进入Redis容器 6
1.3.5 停止、重启和删除Redis容器 7
1.3.6 查看Redis的版本 8
1.3.7 Redis服务器和客户端 8
1.3.8 总结容器和Redis的相关命令 9
1.4 本章小结 10
第2章 实践Redis的基本数据类型 11
2.1 Redis缓存初体验 11
2.1.1 用redis-cli启动客户端并缓存数据 11
2.1.2 设置数据的生存时间 12
2.2 针对字符串的命令 13
2.2.1 读写字符串的set和get命令 13
2.2.2 设置和获取多个字符串的命令 14
2.2.3 对值进行增量和减量操作 15
2.2.4 通过getset命令设置新值 16
2.2.5 针对字符串的其他操作 17
2.3 针对哈希类型变量的命令 17
2.3.1 设置并获取哈希值 18
2.3.2 hsetnx命令 19
2.3.3 针对key的相关操作 19
2.3.4 用hexists命令判断值是否存在 20
2.3.5 对哈希类型数据的删除操作 21
2.4 针对列表类型变量的命令 21
2.4.1 读写列表的命令 21
2.4.2 lpushx和rpushx命令 23
2.4.3 用list模拟堆栈和队列 24
2.4.4 用lrange命令获取指定区间内的数据 25
2.4.5 用lset命令修改列表数据 26
2.4.6 删除列表数据的命令 26
2.5 针对集合的命令 28
2.5.1 读写集合的命令 28
2.5.2 列表和集合类数据的使用场景 29
2.5.3 用sismember命令判断元素是否存在 29
2.5.4 获取集合的交集、并集和差集 29
2.5.5 用srem命令删除集合数据 30
2.6 针对有序集合的命令 31
2.6.1 读写有序集合的命令 31
2.6.2 通过zincrby命令修改元素的分值 33
2.6.3 用zscore命令获取指定元素的分数 33
2.6.4 查看有序集合里的元素排名 34
2.6.5 删除有序集合里的值 35
2.7 本章小结 36
第3章 实践Redis的常用命令 37
3.1 键操作命令 37
3.1.1 用exists命令判断键是否存在 37
3.1.2 用keys命令查找键 38
3.1.3 用scan命令查找键 38
3.1.4 重命名键 39
3.1.5 用del命令删除键 40
3.1.6 关于键生存时间的命令 41
3.2 HyperLogLog相关命令 42
3.2.1 用pfadd添加键值对 42
3.2.2 用pfcount统计基数值 43
3.2.3 用pfmerge进行合并操作 43
3.2.4 统计网站访问总人数 44
3.3 lua脚本相关命令 44
3.3.1 把lua脚本装载到缓存里 45
3.3.2 通过evalsha命令执行缓存中的脚本 45
3.3.3 清空缓存中lua脚本的命令 45
3.3.4 用eval命令执行lua脚本 46
3.4 排序相关命令 46
3.4.1 用sort命令进行排序 46
3.4.2 用by参数指定排序模式 48
3.4.3 用limit参数返回部分排序结果 48
3.4.4 sort命令里get参数的用法 49
3.4.5 通过store参数提升性能 50
3.5 本章小结 51
第4章 实践Redis服务器和客户端的操作 52
4.1 Redis服务器管理客户端的命令 52
4.1.1 获取和设置客户端的名字 52
4.1.2 通过client list命令查看客户端的信息 53
4.1.3 通过client pause命令暂停客户端的命令 53
4.1.4 通过client kill命令中断客户端连接 54
4.1.5 通过shutdown命令关闭服务器和客户端 54
4.2 查看Redis服务器的详细信息 55
4.2.1 通过info命令查看服务器信息 55
4.2.2 查看客户端连接状况 56
4.2.3 观察最大连接数 56
4.2.4 查看每秒执行多少条指令 56
4.2.5 观察内存用量 57
4.2.6 通过command命令查看Redis命令 57
4.2.7 查看指定Redis命令的信息 58
4.2.8 获取指定命令的所有键 58
4.3 查看并修改服务器的常用配置 59
4.3.1 查看服务器的配置 59
4.3.2 通过修改服务器配置设置密码 60
4.3.3 用config rewrite命令改写Redis配置文件 61
4.3.4 启动Redis服务器时加载配置文件 61
4.4 多个客户端连接远端服务器 63
4.4.1 多个Redis客户端连接远端服务器 63
4.4.2 通过docker inspect命令观察IP地址 64
4.4.3 实践客户端命令 65
4.4.4 通过info观察服务器状态 65
4.5 本章小结 66
第5章 Redis数据库操作实战 67
5.1 切换数据库操作 67
5.1.1 查看和设置默认的数据库个数 67
5.1.2 用select命令切换数据库 69
5.2 Redis事务操作 70
5.2.1 事务的概念与ACID特性 70
5.2.2 实现Redis事务的相关命令 70
5.2.3 通过discard命令撤销事务中的操作 71
5.2.4 Redis持久化与事务持久性 72
5.2.5 用watch命令监视指定键 73
5.3 地理位置相关操作 75
5.3.1 用geoadd命令存储地理位置 75
5.3.2 获取地理位置的经纬度信息 76
5.3.3 查询指定范围内的地理信息 76
5.3.4 查询地理位置间的距离 77
5.4 位图数据类型的应用 78
5.4.1 setbit和getbit操作 78
5.4.2 用bitop对位图进行运算 79
5.4.3 bitcount操作 80
5.5 慢查询实战分析 81
5.5.1 慢查询相关的配置参数 81
5.5.2 用slowlog get命令观察慢查询 81
5.5.3 慢查询相关命令 82
5.6 本章小结 83
第6章 Redis数据持久化操作 84
6.1 Redis持久化机制概述 84
6.1.1 基于AOF的持久化机制 84
6.1.2 基于RDB的持久化机制 85
6.2 AOF持久化机制实战 85
6.2.1 AOF配置文件的说明 85
6.2.2 实践AOF持久化 86
6.2.3 观察重写AOF文件的效果 88
6.2.4 模拟数据恢复的流程 89
6.2.5 修复AOF文件 91
6.3 RDB持久化机制实战 91
6.3.1 编写配置文件,生成RDB快照 92
6.3.2 用快照文件恢复数据 93
6.3.3 save和bgsave命令 94
6.4 如何选用持久化方式 94
6.4.1 对比两种持久化方式 95
6.4.2 综合使用两种持久化方式 95
6.4.3 查看持久化状态的命令 96
6.5 本章小结 97
第7章 搭建Redis集群 98
7.1 搭建基于主从复制模式的集群 98
7.1.1 主从复制模式概述 98
7.1.2 用命令搭建主从集群 99
7.1.3 通过配置搭建主从集群 101
7.1.4 配置读写分离效果 103
7.1.5 用心跳机制提高主从复制的可靠性 103
7.1.6 用偏移量检查数据是否一致 104
7.2 搭建哨兵模式的集群 105
7.2.1 哨兵模式概述 105
7.2.2 搭建哨兵模式集群 106
7.2.3 哨兵节点的常用配置 108
7.2.4 哨兵模式下的故障自动恢复效果 109
7.2.5 通过日志观察故障恢复流程 110
7.2.6 故障节点恢复后的表现 112
7.3 搭建cluster集群 113
7.3.1 哈希槽与cluster集群 113
7.3.2 初步搭建cluster集群 114
7.3.3 在cluster集群中读写数据 120
7.3.4 模拟扩容和数据迁移动作 121
7.3.5 cluster集群的常用配置参数 123
7.4 本章小结 124
第8章 Java整合MySQL与Redis 125
8.1 Java通过Jedis读写Redis 125
8.1.1 以Maven方式引入Jedis包 125
8.1.2 通过Jedis读写Redis字符串 126
8.1.3 操作各种Redis命令 128
8.1.4 以事务的方式操作Redis 129
8.1.5 Jedis连接池 130
8.1.6 用管道的方式提升操作性能 131
8.2 Java与各种Redis数据类型 132
8.2.1 读写列表类对象 132
8.2.2 读写哈希表对象 134
8.2.3 读写集合对象 135
8.2.4 读写有序集合对象 135
8.2.5 操作地理位置数据 136
8.3 Redis与MySQL的整合 137
8.3.1 通过Docker安装MySQL开发环境 138
8.3.2 通过JDBC连接并操作MySQL数据库 139
8.3.3 引入Redis做缓存 142
8.3.4 模拟缓存穿透现象 146
8.3.5 模拟内存使用不当的场景 147
8.4 Redis缓存实战分析 148
8.4.1 缓存不存在的键,以防穿透 148
8.4.2 合理设置超时时间,以防内存溢出 150
8.4.3 超时时间外加随机数,以防穿透 152
8.5 本章小结 153
第9章 Redis应用场景与案例实现 154
9.1 Redis消息队列实战 154
9.1.1 消息队列与Redis消息订阅发布模式 154
9.1.2 消息订阅发布的命令和流程 155
9.1.3 消息订阅发布的相关命令汇总 159
9.1.4 Java与消息队列的实战范例 159
9.2 用Java实战Redis分布式锁 162
9.2.1 观察分布式锁的特性 162
9.2.2 加锁与解锁的Redis命令分析 163
9.2.3 基于Java语言的Redis分布式锁 163
9.3 用Java实现Redis限流 167
9.3.1 zset有序集合相关命令与限流 167
9.3.2 zset有序集合与限流 167
9.4 Redis压力测试实战 169
9.5 本章小结 171
第10章 Redis整合MySQL集群与MyCAT分库分表组件 172
10.1 Redis整合MySQL主从集群 172
10.1.1 用Docker搭建MySQL主从集群 172
10.1.2 准备数据 176
10.1.3 创建Java项目,准备pom文件 177
10.1.4 用Java代码读写MySQL集群和Redis 178
10.1.5 MySQL主从集群整合Redis主从集群 181
10.2 Redis整合MySQL和MyCAT分库组件 185
10.2.1 分库分表概述 185
10.2.2 用MyCAT组件实现分库分表 187
10.2.3 Java、MySQL与MyCAT的整合范例 190
10.2.4 Redis集群与MySQL和MyCAT整合范例 195
10.3 本章小结 199
第11章 Redis整合lua脚本实战 200
11.1 在Redis里调用lua脚本 200
11.1.1 结合Redis叙述lua的特性 200
11.1.2 通过redis-cli命令运行lua脚本 201
11.1.3 直接通过eval命令执行脚本 202
11.1.4 通过return返回脚本运行结果 203
11.1.5 整理Redis里和lua相关的命令 203
11.1.6 观察lua脚本阻塞Redis的效果 204
11.2 Redis整合lua高级实战 205
11.2.1 通过KEYS和ARGV传递参数 205
11.2.2 在脚本里引入分支语句 206
11.2.3 while循环调用 207
11.2.4 for循环调用 208
11.2.5 在Java程序里调用Redis的lua脚本 209
11.2.6 lua脚本有错,不会执行 210
11.3 Redis整合lua脚本的实例分析 211
11.3.1 以计数模式实现限流效果 211
11.3.2 用lua脚本防止超卖 214
11.4 本章小结 217
第12章 Redis与Spring Boot的整合应用 218
12.1 在Spring Boot框架里引入Redis 218
12.1.1 SSM和Spring Boot框架介绍 218
12.1.2 准备MySQL数据库和数据表 220
12.1.3 搭建Spring Boot框架 221
12.1.4 在框架里引入Redis等组件 222
12.1.5 启动Spring Boot,观察缓存效果 228
12.2 Spring Boot框架整合Redis哨兵集群 229
12.2.1 搭建Redis哨兵集群 229
12.2.2 在Spring Boot框架里引入Redis哨兵集群 230
12.2.3 观察整合效果 231
12.3 Spring Boot框架整合Redis cluster集群 232
12.3.1 搭建Redis cluster集群 232
12.3.2 在Spring Boot里使用Redis cluster集群 232
12.4 在Spring Boot里实现秒杀案例 233
12.4.1 构建Spring Boot项目 233
12.4.2 编写启动类 235
12.4.3 在Controller层里定义秒杀接口 235
12.4.4 在Service层里通过lua脚本实现秒杀效果 236
12.4.5 配置Redis连接参数 238
12.4.6 演示秒杀效果 239
12.5 本章小结 242
第13章 Redis整合Spring Cloud微服务 243
13.1 微服务和Spring Cloud相关概念 243
13.1.1 传统架构与微服务的比较 243
13.1.2 Spring Cloud全家桶组件与微服务的关系 245
13.2 多模块整合Redis,构建微服务体系 246
13.2.1 用Docker准备Redis和MySQL集群环境 246
13.2.2 含Redis和Eureka的微服务架构图 247
13.2.3 开发Eureka服务器 248
13.2.4 开发含Redis的风控模块(Eureka客户端) 251
13.2.5 开发含Redis的下单模块(Eureka客户端) 259
13.3 Redis与Ribbon整合使用 264
13.3.1 Ribbon负载均衡组件与Redis的整合效果 265
13.3.2 引入多个风控组件分摊流量 265
13.3.3 从缓存和负载均衡维度观察整合后的效果 267
13.4 本章小结 268



---------------------------8062442 - Redis 5设计与源码分析---------------------------


本书赞誉

前言
第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

推荐

车牌查询
桂ICP备20004708号-3