新書推薦:
《
画楼:《北洋画报》忆旧(年轮丛书)
》
售價:NT$
1573.0
《
大国脊梁:漫画版
》
售價:NT$
374.0
《
跟着渤海小吏读历史:大唐气象(全三册)
》
售價:NT$
989.0
《
心智的构建:大脑如何创造我们的精神世界
》
售價:NT$
352.0
《
美国小史(揭秘“美国何以成为美国”,理解美国的经典入门读物)
》
售價:NT$
352.0
《
中国古代北方民族史丛书——东胡史
》
售價:NT$
576.0
《
巨人传(插图珍藏本)
》
售價:NT$
3289.0
《
地下(村上春树沙林毒气事件的长篇纪实)
》
售價:NT$
332.0
|
內容簡介: |
本书涵盖Redis数据类型的使用场景、各种类型的API的使用和底层数据结构源码解析、在DevOps环境中使用Redis的综合实践、Redis主从架构、RedisSentinel Redis、Redis集群环境搭建及其实现的高可用与高可扩原理等内容,提供深入浅出的实战案例,旨在帮助读者深入了解Redis数据结构领域和日常运维Redis所碰到的常见问题解决方案,。
本书适合Redis新手、所有对Redis感兴趣的开发与运维人员阅读和参考,同时还可作为高等院校相关专业的参考教程。
|
目錄:
|
前言
第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<
|
內容試閱:
|
大数据时代的到来,使得传统数据库在处理业务应用时遇到性能上的瓶颈,用户体验很不乐观。如今海量数据的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日
|
|