新書推薦:
《
佛山华家班粤菜传承 华家班59位大厨 102道粤菜 图文并茂 菜式制作视频 粤菜故事技法 佛山传统文化 广东科技
》
售價:HK$
221.8
《
武人琴音(十周年纪念版 逝去的武林系列收官之作 形意拳一门三代:尚云祥、韩伯言、韩瑜的人生故事 凸显百年武人命运)
》
售價:HK$
43.7
《
剑桥斯堪的纳维亚戏剧史(剑桥世界戏剧史译丛)
》
售價:HK$
154.6
《
禅心与箭术:过松弛而有力的生活(乔布斯精神导师、世界禅者——铃木大拙荐)
》
售價:HK$
66.1
《
先进电磁屏蔽材料——基础、性能与应用
》
售價:HK$
221.8
《
可转债投资实战
》
售價:HK$
99.7
《
王氏之死(新版,史景迁成名作)
》
售價:HK$
54.9
《
敢为天下先:三年建成港科大
》
售價:HK$
77.3
|
編輯推薦: |
代入 Redis 视角,与各路“神仙”对话
搭建完整的知识框架
欲练此功不必自攻只需放松
知其然知其所以然
|
內容簡介: |
本书共5章。其中,第1章从一条命令的执行开始,勾勒出Redis的数据存储原理和整体架构;第2章介绍了所有数据类型的实现原理和应用实战;第3章介绍了RDB快照、AOF、主从复制架构、哨兵集群和Redis Cluster的原理及使用方法;第4章介绍了Redis事务、内存管理、事件驱动、发布/订阅机制、客户端缓存和I/O多线程模型;第5章介绍了性能排查与解决问题的检查清单、使用规范、内存优化技巧、生产王者配置、缓存使用策略和分布式锁演进原理。
本书适合后端开发工程师、运维人员、系统架构师及刚入行的程序员阅读,用以掌握 Redis 内部原理并提升实战技巧。
|
關於作者: |
微信公众号“码哥字节”作者、InfoQ签约作者、后端架构师,9 年互联网金融后端从业经验。擅长Redis、Spring、Kafka、MySQL 等技术,对云原生微服务有着深入的研究,喜欢用简洁、风趣、幽默的语言,将各种技术的知识点或深或浅地展开,分享自己在成长过程中积累的经验和正确提升技术水平的方法论。
|
目錄:
|
第1章 起势入门 1
1.1 从头说起 1
1.1.1 Redis能做什么 1
1.1.2 源码编译 2
1.1.3 目录结构 7
1.2 整体架构 8
1.2.1 数据存储原理 10
1.2.2 一条命令的执行过程 14
第2章 核心筑基——数据结构与心法 23
2.1 字符串实现原理与实战 23
2.1.1 不同于C语言的字符串 23
2.1.2 SDS的奥秘 24
2.1.3 出招实战:分布式ID生成器 27
2.2 Lists实现原理与实战 28
2.2.1 线性有序 28
2.2.2 linkedlist、ziplist、quicklist、listpack演进 28
2.2.3 出招实战:消息队列 36
2.3 Sets实现原理与实战 40
2.3.1 无序和唯一 40
2.3.2 intset 41
2.3.3 出招实战:共同好友 43
2.4 散列表实现原理与实战 44
2.4.1 field-value pairs集合 44
2.4.2 dict和listpack 45
2.4.3 出招实战:购物车 49
2.5 Sorted Sets实现原理与实战 52
2.5.1 有序性和唯一性 52
2.5.2 skiplist dict和listpack 52
2.5.3 出招实战:游戏排行榜 57
2.6 Stream实现原理与实战 59
2.6.1 支持消费者组的轻量级MQ 59
2.6.2 Radix Tree的奥秘 60
2.6.3 出招实战:实现消费者组特性的消息队列 67
2.7 Geospatial实现原理与实战 76
2.7.1 基于位置服务 77
2.7.2 GeoHash编码和底层数据结构 81
2.7.3 出招实战:附近的人 86
2.8 Bitmap实现原理与实战 90
2.8.1 Bitmap 90
2.8.2 SDS数据结构构成的位数组 91
2.8.3 出招实战:亿级用户登录判断、签到统计系统 94
2.9 HyperLogLog实现原理与实战 97
2.9.1 基数统计 97
2.9.2 稀疏矩阵和稠密矩阵 98
2.9.3 出招实战:海量网页访问量统计 99
2.10 Bloom Filter实现原理与实战 101
2.10.1 Bloom Filter 102
2.10.2 位数组和哈希函数 102
2.10.3 出招实战:缓存穿透解决方案 103
2.11 Redis高性能的原因 106
2.11.1 基于内存实现 107
2.11.2 I/O多路复用模型 108
2.11.3 单线程模型 110
2.11.4 高效的数据结构 112
2.11.5 全局散列表 113
第3章 不死之身——高可用 114
3.1 宕机恢复,不丢数据稳如山 114
3.1.1 RDB 快照 114
3.1.2 AOF 118
3.2 主从复制架构 125
3.2.1 主从数据同步原理 127
3.2.2 主从同步的缺点 135
3.3 哨兵集群 136
3.3.1 哨兵的任务 138
3.3.2 哨兵集群原理 143
3.4 Redis集群 147
3.4.1 Redis 集群是什么 148
3.4.2 Redis 集群的原理 150
3.4.3 集群配置注意事项 164
第4章 结丹飞升——高级技能进阶 165
4.1 Redis事务修炼手册 165
4.1.1 什么是事务的 ACID 165
4.1.2 Redis 如何实现事务 166
4.1.3 Redis 事务满足 ACID 吗 168
4.2 Redis内存管理 174
4.2.1 淘汰策略概述 174
4.2.2 过期删除策略 183
4.3 Redis事件驱动:文件和时间的协奏曲 185
4.3.1 Redis server 启动入口 186
4.3.2 文件事件 190
4.3.3 时间事件 191
4.4 Redis发布/订阅机制深度解析 194
4.4.1 发布/订阅机制简介 194
4.4.2 发布/订阅机制实战 195
4.4.3 原理分析 199
4.4.4 使用场景 204
4.5 性能必杀技之客户端缓存 205
4.5.1 为什么需要客户端缓存 205
4.5.2 客户端缓存实现原理 207
4.5.3 源码解析 211
4.6 性能必杀技之Redis I/O多线程模型 213
4.6.1 单线程模型真的只有一个线程吗 213
4.6.2 线程模型的演化 214
4.6.3 I/O多线程模型解读 215
4.7 Redis内存碎片深度解析与优化策略 221
4.7.1 数据已删,释放的内存去哪了 221
4.7.2 什么是内存碎片 223
4.7.3 内存碎片的形成原因 223
4.7.4 内存碎片解决之道 224
第5章 元婴大成——出师实战 227
5.1 Redis性能排查与解决问题的终极检查清单 227
5.1.1 性能基线测量 227
5.1.2 慢命令监控 229
5.1.3 解决性能问题的终极检查清单 230
5.2 Redis很强,不懂使用规范就糟蹋了 237
5.2.1 key-value使用规范 237
5.2.2 命令使用规范 239
5.2.3 数据存储使用规范 240
5.2.4 SDK使用规范 240
5.2.5 运维规范 241
5.3 Redis内存优化必杀技,小内存存储大数据 241
5.3.1 key-value优化 242
5.3.2 小数据集合编码优化 243
5.3.3 使用对象共享池 244
5.3.4 使用bit或byte级别操作 244
5.3.5 巧用Hashes类型优化 245
5.3.6 使用内存碎片清理功能 246
5.3.7 使用32位的Redis 246
5.4 生产王者配置详解 246
5.4.1 常规配置 247
5.4.2 RDB 快照持久化 250
5.4.3 主从复制 251
5.4.4 安全 255
5.4.5 内存管理 256
5.4.6 惰性释放 257
5.4.7 AOF 持久化 259
5.4.8 Redis集群 261
5.4.9 性能监控 264
5.4.10 高级配置 264
5.4.11 在线内存碎片清理 270
5.4.12 绑定 CPU 271
5.4.13 sentinel.conf 哨兵 271
5.5 缓存击穿、缓存穿透、缓存雪崩怎么解决 275
5.5.1 缓存击穿 275
5.5.2 缓存穿透 277
5.5.3 缓存雪崩 278
5.6 Redis缓存策略与数据库一致性问题深度剖析 280
5.6.1 缓存策略 281
5.6.2 缓存与数据库一致性是什么 287
5.6.3 旁路缓存的问题分析 287
5.6.4 数据库与缓存一致性解决方案 293
5.6.5 总结 295
5.7 Redis分布式锁演进原理与实战 296
5.7.1 为什么需要分布式锁 296
5.7.2 入门级分布式锁 297
5.7.3 释放别人的锁 299
5.7.4 可重入锁 300
5.7.5 正确配置锁过期时间 303
5.7.6 Redis 部署方式对锁的影响 307
5.7.7 红锁 307
5.7.8 红锁的是与非 308
|
內容試閱:
|
亲爱的读者,你好!首先,欢呼一下,我终于完成了这本书的编写工作!对于写书和写微信公众号文章,前者就像参加马拉松,后者更像在跑步机上短跑。
马拉松赛跑需要持久力、需要耐心、需要策略、需要坚韧不拔的精神。而短跑呢,只需要足够快。
在过去的几年里,我在微信公众号“码哥跳动”上一篇篇地写下了我的技术心得,一晃就有了156篇文章,其中45篇是关于Redis的。有很多读者是因为看了我的Redis专栏才关注的我的公众号,这让我倍感欣慰。
后来,有出版社的编辑老师找到我,希望我能整理出一本关于Redis的图书。我原本以为这会是个轻松的任务,然而实际上,我用了两年多的时间才完成。
为什么这么久呢?因为我希望把最好的内容呈现给你们。
公众号上的文章,有些地方还不够完善,所以我花了很多时间重新梳理了Redis的整体架构和源码,重新编写了原来的45篇Redis技术文章,从更深层次挖掘Redis的底层实现原理,并尽量用风趣幽默的语言解释难懂的技术点。
作为后端开发者的我深深懂得学习是一件比较难的事情,所以我想站在开发者的角度,用拟人化、场景化的诙谐幽默的言语,加上“撩人心弦”又准确的图片,让读者轻松愉快地学习 Redis的实现原理和开发技巧。
这个过程是费时费力的,但是当看到最后的成果时,我觉得一切都是值得的。
本书基于当前最新的Redis 7.0的源码讲解,建立了一个完整的Redis知识框架,从全局着眼整理Redis的知识体系,并结合难点给出了155张图,希望读者更容易理解。
在我看来,写书可比写公众号文章难多了。书中的语言要精准正确,句子不能存在语病,内容要循序渐进有层次,还要经过出版社编辑老师的多次审核、校正,书中的每段话、每个字都是我精心“雕琢”的成果。
编写本书的过程也让我有机会重新整理和深化对Redis的理解。我希望这本书能帮助你们修炼内功心法,快速掌握Redis技术原理。
我试图从Redis的第一人称视角出发,用风趣的言语为你们逐步揭开Redis的面纱,分享Redis升级之路的心法技巧和提高技术水平的方法论。
希望你们通过阅读本书,在精进Redis的道路上更上一层楼。
本书特色
本书从Redis 源码目录结构、整体存储结构、一条指令的执行过程展开,分为以下章节。
起势入门:带你构建一个源码可调式开发环境,从一条命令的执行开始,勾勒出 Redis 的数据存储原理和整体架构。核心筑基——数据结构与心法:包含所有数据类型的实现原理和应用实战。不死之身——高可用:包括RDB快照、AOF、主从复制架构、哨兵集群和Redis集群的原理及使用方法。结丹飞升——高级技能进阶:介绍Redis 事务、内存管理、事件驱动、发布/订阅机制、客户端缓存和I/O多线程模型。元婴大成——出师实战:包括性能排查与解决问题的检查清单、使用规范、内存优化技巧、生产王者配置、缓存使用策略和分布式锁演进原理。
本书从 Redis 的视角与各路“神仙”对话,探讨每个技术点的原理,在探讨过程中或详或略地展开相关知识点。
本书语言诙谐幽默,并配以生动形象且准确的图片,用循循善诱的方式帮助读者建立一个完整的Redis知识框架和架构体系,构建系统观,让读者较为深入地了解Redis的工作原理。
千古无同局,叶底能否藏花,我们未来印证。愿此心法能让你学有所成,你来,我等着。
读者对象
以下是本书适合的读者对象。
后端开发工程师和运维人员:对于有一些使用经验,但是Redis功底相对薄弱、对 Redis的底层运行原理了解不多的读者,阅读本书后可掌握高阶特性的原理和实战方法,合理并高效地运用 Redis解决工作中的问题并进行性能调优,以及维护和构建高性能的Redis集群。系统架构师:从全局视角掌握Redis架构和原理,学习Redis高可用、高性能的设计思想,解决Redis性能难题。刚入行的程序员:如果你不想仅停留在“面试八股文”的阶段,而是希望从更深层次掌握Redis内部原理和实战技巧,那么本书可以帮助你在面试或者工作中脱颖而出。
勘误和支持
由于作者水平有限,书中难免出现一些错误或者不准确的地方,恳请广大读者批评指正。
如果大家在阅读过程中产生疑问或者发现了错误,欢迎到微信公众号“码哥跳动”后台留言,我会认真回复每个人提出的问题。
致谢
感谢微信公众号“码哥跳动”的读者朋友,你们的鼓励和支持是我坚持下去的动力。
感谢电子工业出版社的张晶老师,她在本书的创作过程中提供了许多修改建议和帮助,没有她,本书无法顺利出版。
感谢我的家人和Chaya激励我完成本书的编写工作。
谨以此书献给一路关注我、支持我的读者和所有热爱编程的朋友,希望喜欢Redis的朋友都能通过阅读本书修炼心法,成为Redis高手!
李健青
2024.4
|
|