首页>参考读物>计算机科学与技术>软件与程序设计

大数据高并发Redis一本通
作者 : 张文亮 编著
出版日期 : 2021-10-27
ISBN : 978-7-111-69219-5
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 372
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书涵盖Redis数据类型的使用场景、各种类型的API的使用和底层数据结构源码解析、在DevOps环境中使用Redis的综合实践、Redis主从架构、RedisSentinel Redis、Redis集群环境搭建及其实现的高可用与高可扩原理等内容,提供深入浅出的实战案例,旨在帮助读者深入了解Redis数据结构领域和日常运维Redis所碰到的常见问题解决方案,。
本书适合Redis新手、所有对Redis感兴趣的开发与运维人员阅读和参考,同时还可作为高等院校相关专业的参考教程。

图书特色

由浅入深,讲透Redis精髓 / 鞭辟入里,探究Redis中数据类型的底层机理
技术前沿,阐述Redis多线程版本的特性 / 图文并茂,展示操作过程和效果

图书前言

大数据时代的到来,使得传统数据库在处理业务应用时遇到性能上的瓶颈,用户体验很不乐观。如今海量数据的3V(Volume,数量;Velocity,速度;Variety,多样)和3高(高并发、高性能、高可扩展)给传统数据库曾经非常成功的“一种架构支持多类应用”的模式带来了巨大的挑战。在互联网和大数据应用的冲击下,世界数据库格局发生了革命性的变化,从之前的SQL一统天下变成了SQL(MySQL、SQL Server、Oracle等)、NoSQL(Redis、HBase、MongoDB等)、NewSQL(VoltDB、TiDB、Cosmos DB等)共同来支撑多类应用的局面。近两年,身边的同事、朋友和学生经常探讨一些与Redis相关的问题,让我对Redis的内部实现原理越来越感兴趣,并且一些问题开始频繁地出现在我的脑海中。
 Redis到底有几种数据类型——5、8、10种?
 Redis的底层数据结构是怎样的,各自又有什么特点?
 Redis的不同数据结构的使用场景是什么?
 Redis到底会不会丢数据?在生产环境中怎么配置合理的持久化策略?
 Redis的发布与订阅、Lua脚本、事务等特性到底是如何实现的?
 Redis怎么实现分布式锁,其原理是怎样的?
 Redis的主从、哨兵、集群各有什么特点,原理又是怎样的?
对于以上这些问题,网上充斥着各种各样的答案。基于这种情况,我决定系统地了解和深入研究Redis内部原理,于是阅读了大量Redis源代码,经过总结和思考之后才有了这本书的面世。
本书提供了深入浅出的实战案例和相关的背景知识,既包含Redis的各个方面——从Redis的基本数据类型开始,直到数据类型底层结构、事务、高可用、集群化、管理和高级主题,又通过大量的案例向读者展示有关Redis的相关知识,为许多常见的开发和维护问题提供开箱即用的解决方案,从而便于读者理解每个实战案例的关键知识点。此外,本书还提供了有关Redis内部工作原理的相关基本信息和必要的解释。读者越是深入了解Redis的工作原理,就越能对工程中所涉及的权衡做出合理的决定。
本书提供资源文件,读者可以登录机械工业出版社华章分社的网站(www.hzbook.com),先搜索到本书,然后在页面上的“资料下载”模块下载。如果下载有问题,请发送电子邮件到booksaga@126.com。
最后,感谢各位读者选择本书,希望本书能对读者的学习有所助益!虽然我对书中所述内容尽量核实并多次进行文字校对,但是限于水平,难免有疏漏之处,敬请广大读者批评指正。我会采纳大家的意见,争取让此书更加完善,以此来回报大家对本书的支持。

张文亮
2021年5月28日

上架指导

计算机\程序设计

封底文字

一本学习Redis的实用指南,以零基础讲解为宗旨,用实例引导读者深入学习,将通俗易懂的理论和不同难度的案例相结合,全面讲解Redis的各项技术及实战技能。

● 提供丰富的Redis API范例代码
● 全面解析Redis的各种业务应用场景
● 深挖Redis底层数据结构
● 为生产环境中使用Redis的主从、哨兵、集群架构提供了丰富的调优技巧
● 以“秒杀”场景为例,全方位讲解分布式锁
● 为缓存穿透、缓存雪崩等高频面试问题提供实用的指导
● 清晰阐述Redis 6的新特性,以及Lua脚本、发布与订阅、布隆过滤器等高级特性

图书目录

前言
第1章 大数据高并发离不开Redis 1
1.1 NoSQL发展历程 1
1.2 初识Redis 3
1.3 Redis的魅力 3
1.4 喜欢Redis的理由 4
1.5 学习Redis的第一步 6
1.5.1 在Windows环境下安装Redis 6
1.5.2 在Linux环境下安装Redis 11
1.5.3 在Docker环境下安装Redis 13
1.5.4 Redis界面化管理工具 17
1.6 redis.conf文件的详细说明 18
1.7 Redis基本操作 21
1.7.1 启动Redis服务器 21
1.7.2 远程登录 21
1.7.3 切换数据库 21
1.7.4 删除键 22
1.7.5 删除当前数据库的所有键 22
第2章 Redis多种数据类型使用场景 23
2.1 String数据类型的API和使用场景 23
2.1.1 String数据类型的常规操作 23
2.1.2 结合应用场景演练 24
2.2 String也能做,为什么还要用Hash 30
2.2.1 Hash数据类型的常规操作 31
2.2.2 结合应用场景演练 31
2.3 一种类型多种用法,原来List还可以这样做 34
2.3.1 List模拟数据结构 35
2.3.2 List常规操作 38
2.3.3 利用列表迅速提升网站首页的并发量 38
2.4 开启Set数据类型的正确操作姿势 39
2.4.1 明星绯闻和微博瘫痪的那些事 39
2.4.2 抽奖逻辑 39
2.4.3 文章点赞或者投票 40
2.4.4 共同好友统计 41
2.5 微服务的限流操作和Zset的那些瓜葛 42
2.5.1 利用Zset实现限流 43
2.5.2 新闻排行榜场景实战 47
2.5.3 直播打赏排名场景实战 48
第3章 数据结构底层 50
3.1 String数据结构底层解析 51
3.1.1 String的三种编码 51
3.1.2 SDS和内存重新分配 54
3.1.3 embstr编码的内容追加 56
3.1.4 内存空间释放 57
3.1.5 SDS特征 58
3.2 Hash数据结构底层解析 58
3.2.1 ZipList数据结构 58
3.2.2 HashTable数据结构 66
3.2.3 ZipList和HashTable的抉择 81
3.3 List数据结构底层解析 83
3.3.1 单向链表 83
3.3.2 双向链表 84
3.3.3 Redis链表 84
3.3.4 快速列表 86
3.4 Set数据结构底层解析 91
3.4.1 整数集合 91
3.4.2 intset和HashTable的抉择 94
3.5 Zset数据结构底层解析 95
3.5.1 跳跃表数据结构解析 95
3.5.2 ZipList和跳跃表的抉择 99
第4章 数据持久化 101
4.1 RDB方式持久化 102
4.1.1 save触发方式 103
4.1.2 bgsave触发方式 103
4.1.3 后台触发 105
4.1.4 RDB备份的应用场景 107
4.2 AOF方式持久化 107
4.2.1 AOF持久化流程 108
4.2.2 相关参数配置 113
4.2.3 重写操作 113
4.3 AOF和RDB的数据恢复顺序 115
4.4 RDB和AOF持久化的优缺点 116
4.4.1 RDB持久化的优缺点 116
4.4.2 AOF持久化的优缺点 116
4.5 AOF+RDB混合模式配置 117
第5章 Redis的事务和Lua脚本操作 119
5.1 事务概述 119
5.2 事务使用 120
5.2.1 事务的三个阶段 120
5.2.2 事务范例 120
5.3 事务性质 123
5.3.1 原子性 123
5.3.2 一致性 124
5.3.3 隔离性 124
5.3.4 持久性 124
5.3.5 安全性 125
5.4 Lua脚本 126
5.4.1 eval 126
5.4.2 Lua和Redis数据类型的转换 128
5.4.3 脚本的原子性 130
5.4.4 错误处理 130
5.4.5 带宽和evalsha 131
5.4.6 脚本缓存 131
5.4.7 script命令和纯函数脚本 132
5.4.8 全局变量保护 133
5.4.9 内部脚本 133
5.4.10 沙箱和最大执行时间 135
5.4.11 Redis脚本命令 136
5.4.12 Lua脚本的好处 138
5.5 Lua实战 138
第6章 pub/sub和Stream 142
6.1 频道的订阅与消息发送 142
6.2 发布与订阅的使用 143
6.3 发布与订阅的原理 145
6.4 订阅模式 146
6.5 pub和sub使用范例 147
6.6 与其他发布和订阅比较 148
6.7 Stream概述 148
6.8 Stream实例 154
6.8.1 同组消费模式 154
6.8.2 不同组消费模式 155
6.8.3 消息确认 157
第7章 主从复制 158
7.1 主从复制概述 159
7.2 主从复制工作原理 159
7.2.1 连接建立阶段 160
7.2.2 数据同步阶段 164
7.2.3 命令传播阶段 181
7.2.4 身份验证 183
7.2.5 延迟与不一致 184
7.3 Redis复制的注意事项 185
7.3.1 复制的注意事项 185
7.3.2 复制的安全性 185
7.3.3 无须磁盘参与的复制 186
7.3.4 只读性质的从节点 186
7.3.5 主从多种模式下的问题 187
7.4 搭建主从节点的实例 189
7.4.1 以命令行方式搭建主从节点 189
7.4.2 以配置文件方式搭建主从节点 192
7.4.3 以身份验证模式搭建主从架构 195
7.5 主从架构的“坑”和优化技巧 197
7.5.1 复制超时问题 197
7.5.2 主从架构数据应用问题 198
7.5.3 主从复制中断问题 199
7.5.4 主从复制应用中的优化技巧 199
7.5.5 主从架构重要配置总结 200
7.6 主从架构的作用 202
第8章 哨兵模式 203
8.1 哨兵架构概述 203
8.2 哨兵架构的搭建 204
8.2.1 运行Sentinel 205
8.2.2 Sentinel配置 205
8.2.3 Windows 10搭建Redis 5版本哨兵架构 211
8.2.4 Linux系统哨兵架构的搭建和验证 215
8.3 Sentinel API 217
8.3.1 Sentinel命令 217
8.3.2 其他相关配置和说明 218
8.4 哨兵细节原理分析 221
8.4.1 sdown与odown 221
8.4.2 哨兵集群的自动发现机制 221
8.4.3 故障转移的重新配置 222
8.4.4 从节点选举和优先级 222
8.4.5 算法和内部结构 223
8.4.6 配置epoch 223
8.4.7 配置传播 224
8.4.8 网络分区下的一致性 224
8.5 客户端访问哨兵架构的系统 226
8.5.1 C#连接Redis哨兵架构的系统 226
8.5.2 Java连接Redis哨兵架构的系统 227
8.5.3 客户端原理 227
第9章 Redis集群 228
9.1 集群概述 228
9.2 集群作用 228
9.3 集群设计注意事项 229
9.4 Redis集群的搭建 229
9.4.1 在Windows 10下搭建Redis 5集群 230
9.4.2 在Linux下搭建Redis 6集群 233
9.5 数据分区策略 234
9.6 Redis一致性保证 235
9.7 节点通信机制 236
9.7.1 通信端口 236
9.7.2 Gossip协议 237
9.8 集群的其他细节 239
9.8.1 Redis集群中的主从复制 239
9.8.2 Redis集群客户端和服务器端的协议 239
9.8.3 故障检测 241
9.9 从节点的选举和提升 242
9.9.1 主节点回复从节点的投票请求 244
9.9.2 从节点选举的竞争情况 245
9.9.3 update消息 245
9.9.4 备份迁移 245
9.9.5 备份迁移算法 246
9.9.6 安全写入 247
9.9.7 键分布模型 247
9.9.8 键哈希标签 249
9.9.9 集群节点信息和源码 249
9.9.10 集群相关命令 251
9.10 集群重新分片 251
9.11 扩容和缩容 253
9.11.1 扩容 253
9.11.2 缩容 258
9.12 故障转移和高可用 260
9.13 集群使用时的注意事项 262
第10章 Redis 6新特征 264
10.1 为什么Redis 6是多线程 266
10.2 开启多线程 267
10.3 Redis服务基准测试 268
10.4 ACL安全策略 269
10.4.1 ACL规则 269
10.4.2 使用外部ACL文件 271
10.4.3 使用ACL命令配置ACL 271
10.4.4 ACL实例 271
第11章 布隆过滤器 275
11.1 布隆过滤器概述 275
11.2 环境安装 275
11.2.1 模块化安装 275
11.2.2 Docker安装 276
11.3 布隆过滤器的原理 277
11.4 应用场景 278
第12章 Redis内存相关策略和内存碎片 279
12.1 maxmemory配置 279
12.2 数据淘汰策略 280
12.3 LRU算法 280
12.4 LFU算法 280
12.5 数据过期删除策略 281
12.6 主从架构和数据持久化对数据的过期处理 281
12.7 内存碎片 282
12.7.1 Redis内存碎片的形成 282
12.7.2 内存使用情况 282
12.7.3 清理内存碎片 283
第13章 分布式锁 285
13.1 为什么需要分布式锁 285
13.2 非阻塞锁的实现和原理 288
13.3 阻塞锁的实现和原理 290
13.4 Redlock原理 294
13.4.1 什么是Redlock 294
13.4.2 单节点上实现Redlock 295
13.4.3 Redlock算法 295
第14章 高频面试题 301
14.1 缓存穿透 301
14.2 缓存击穿 304
14.3 缓存雪崩 305
附录 Redis API详情 306

教学资源推荐
作者: [美]约翰·R. 莱文(John R. Levine) 著
作者: Calvin Lin;Lawrence Snyder
作者: 吴黎兵 周畅 宋麟
参考读物推荐
作者: Ted Husted
作者: Bill Wagner
作者: 华为公司数据管理部 著
作者: 王秀文 郭明鑫 王宇韬 编著