新書推薦:
《
大处着眼:持久战与《论持久战》
》
售價:NT$
390.0
《
人工智能与大数据:采煤机智能制造
》
售價:NT$
440.0
《
未来漫游指南:昨日科技与人类未来
》
售價:NT$
445.0
《
新民说·逝去的盛景:宋朝商业文明的兴盛与落幕(上下册)
》
售價:NT$
790.0
《
我从何来:自我的心理学探问
》
售價:NT$
545.0
《
失败:1891—1900 清王朝的变革、战争与排外
》
售價:NT$
390.0
《
送你一匹马(“我不求深刻,只求简单。”看三毛如何拒绝内耗,为自己而活)
》
售價:NT$
295.0
《
秦汉史讲义
》
售價:NT$
690.0
|
編輯推薦: |
1)知名企业专家联合撰写,助你攻克Redis数据存储与集群管理难题
2)详解Redis新特性、多种数据结构、启动与命令执行过程,以及持久化、主从复制和高可用集群的原理、实现与应用技巧
|
內容簡介: |
全书主要分为三分介绍Redis。
第1分介绍Redis6中使用的数据结构,括动态字符串、跳跃表、压缩列表、字典、整数集合和快速链表,详细介绍其基本结构及常见作。
第二分为本书核心篇章,先介绍了Redis6的启动流程,命令解析流程,之后对Redis6中的命令实现进行了全面的介绍,括键命令、字符串命令、哈希表命令、列表命令、集合及有序集合命令、地理位置相关的GEO命令、统计相关的HyperLogLog命令。
第三分,主要介绍了Redis6的一些性及使用,括事务、持久化、主从复制以及集群等。
|
關於作者: |
熊浩含,字节跳动后端高级工程师,曾就职于百度、腾讯和滴滴。对Redis等开源软件有较深的研究。乐于钻研技术难点,喜欢折腾,在学习方面总结了一套较实用的方法论。陈 雷,希望学产研负责人,清华大学与北京邮电大学硕士,曾在百度、腾讯和滴滴等公司工作,拥有15年产品研发经验,合著有《PHP 7底层设计与源码实现》。黄 桃,希望学增长研发部负责人,从事互联网服务端研发与架构工作多年,熟悉PHP、Nginx、Redis等源码实现,乐于学习与分享,合著有《PHP 7底层设计与源码实现》。李 乐,好未来Golang开发专家、西安电子科技大学硕士,曾就职于滴滴,乐于钻研技术与源码,合著有《Redis 5设计与源码分析》《Nginx底层设计与源码分析》。施洪宝,Shopee后端研发工程师、东南大学硕士,对Redis、Nginx等开源软件有较深的理解,对高并发、分布式技术有浓厚兴趣。周生政,与爱为舞后端高级工程师,曾就职于字节跳动、滴滴和北京环球国广媒体科技有限公司,熟悉To B和To C业务,拥有多年后端开源软件研究与实践经验,曾用Java、Go、Python、PHP开发线上系统。
|
目錄:
|
序
前言
第1章 Redis会知识1
1.1 Redis 6.0的新性2
1.2 Redis源码结构2
1.3 Redis的安装与调试3
1.4 小结6
第2章 基础数据结构解析7
2.1 对象7
2.2 字符串11
2.3 列表15
2.3.1 list15
2.3.2 ziplist16
2.3.3 quicklist18
2.4 字典25
2.4.1 基本实现25
2.4.2 字典扩容28
2.5 集合30
2.5.1 intset简介31
2.5.2 数据存储31
2.6 有序集合33
2.6.1 跳跃表简介33
2.6.2 数据存储36
2.7 小结37
第3章 stream底层数据结构38
3.1 stream简介38
3.1.1 listpack39
3.1.2 rax41
3.1.3 stream结构44
3.2 stream底层结构listpack
与rax的实现49
3.2.1 初始化49
3.2.2 查找元素49
3.2.3 添加元素51
3.2.4 删除元素53
3.2.5 遍历元素55
3.3 stream结构的实现55
3.3.1 初始化55
3.3.2 添加元素56
3.3.3 删除元素57
3.3.4 查找元素60
3.3.5 遍历元素61
3.4 小结63
第4章 Redis启动流程64
4.1 redisServer简介64
4.2 sever启动过程65
4.2.1 server初始化65
4.2.2 启动监听68
4.3 事件处理71
4.3.1 文件事件72
4.3.2 时间事件77
4.4 小结80
第5章 一次命令请求过程81
5.1 基础知识81
5.1.1 客户端结构体client81
5.1.2 命令结构体redisCommand83
5.2 I/O多线程86
5.2.1 I/O线程管理87
5.2.2 I/O线程同步89
5.3 RESP 3协议92
5.4 命令解析96
5.5 命令调用98
5.6 ACL权限控制100
5.6.1 ACL概述100
5.6.2 ACL源码实现104
5.7 结果返回105
5.8 小结108
第6章 持久化109
6.1 备份原理109
6.1.1 内存数据落盘110
6.1.2 异步复制112
6.1.3 文本协议与二进制协议113
6.1.4 大小端114
6.2 持久化配置115
6.3 AOF116
6.3.1 同步时机116
6.3.2 always策略性116
6.3.3 命令同步118
6.3.4 重写机制119
6.4 RDB119
6.4.1 执行流程119
6.4.2 RDB协议120
6.4.3 文件分析123
6.5 混合持久化124
6.6 RDB与AOF相关配置指令125
6.7 小结126
第7章 主从复制127
7.1 主从复制功能的实现127
7.1.1 主从复制方案的原理与演进128
7.1.2 主从复制的化方案130
7.2 主从复制源码分析131
7.3 Slave源码分析135
7.4 Master源码分析141
7.5 小结145
第8章 哨兵146
8.1 哨兵简介146
8.2 哨兵的启动147
8.2.1 哨兵配置147
8.2.2 启动流程148
8.3 哨兵相关的数据结构150
8.4 哨兵的工作原理152
8.4.1 与Master节点及Slave节点
建立连接152
8.4.2 与其他哨兵建立连接155
8.5 故障转移157
8.6 小结161
第9章 集群162
9.1 数据分区163
9.2 通信机制165
9.2.1 维护元数据的方案165
9.2.2 通信数据的类型167
9.3 代码流程172
9.3.1 初始化173
9.3.2 定时任务173
9.4 主从切换175
9.4.1 自动切换176
9.4.2 手动切换181
9.5 副本漂移181
9.6 分片迁移185
9.7 小结186
第10章 Redis应用:缓存与锁187
10.1 缓存187
10.1.1 常见问题及解决方案187
10.1.2 大key问题191
10.2 锁194
10.2.1 单机悲观锁196
10.2.2 单机乐观锁199
10.2.3 推荐的Redlock203
10.3 客户端缓存207
10.3.1 基础知识207
10.3.2 客户端缓存的使用208
10.3.3 源码分析211
10.4 小结216
|
內容試閱:
|
Preface 前 言为什么要写这本书Redis是一款非常受欢迎的开源内存数据存储系统,具有高性能、可扩展、灵活等优点,在互联网和大数据领域得到了广泛应用。为了帮助读者更好地理解和应用Redis,需要一本既有理论又有实践、通俗易懂的Redis书籍。于是,本书诞生了。本书将介绍Redis的基础知识,包括Redis的数据结构、数据存储方式、命令和使用场景等,同时深入探讨Redis的高级应用,如Redis集群、持久化、性能优化等。本书将通过丰富的案例帮助读者更好地理解和掌握Redis,使读者能够快速上手并在实际项目中应用Redis。希望本书能够为读者提供有价值的参考,帮助读者更好地理解Redis的基本原理和高级应用,从而实现高效的数据存储和集群管理。读者对象Redis工程师;对Redis感兴趣的读者;有一定C语言基础的读者。如何阅读本书本书共10章。第1章 介绍Redis 6.0的新特性以及Redis的入门知识。第2章 详细分析Redis的基础数据结构,包括对象、字符串、列表、字典、集合和有序集合。第3章 详细介绍stream的底层实现,包括依赖的两种数据结构listpack及rax,并介绍了这两种结构的基本操作。第4章 详细介绍Redis启动流程,讲解了redisServer对文件事件和时间事件的处理。第5章 主要介绍服务端处理客户端命令请求的流程,包括读取并解析客户端命令请求,执行命令请求,返回命令执行结果。通过本章的学习,读者可以理解整个命令的执行流程。第6章 主要介绍持久化,讲解了RDB和AOF的实现原理。第7章 讲解Redis的主从复制功能的实现原理,包括Master与Slave的源码和原理。第8章 主要介绍Redis哨兵的原理与实现。第9章 详细介绍Redis高可用集群方案的设计思想及实现。第10章 列举Redis的典型应用场景—缓存和锁,以及客户端缓存的特性。读者可以根据自己的兴趣及需要,选择阅读相关章节。勘误和支持由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有更多的宝贵意见,欢迎访问https://segmentfault.com/u/php7internal进行专题讨论,我们会尽量在线上为你提供解答。同时,也可以通过邮箱cltf@163.com联系我们,期待得到你的反馈,让我们在技术之路上互勉共进。谨以此书献给我最亲爱的家人和朋友,以及众多热爱Redis的朋友!熊浩含
|
|