数据库技术丛书REDIS5设计与源码分析
本书特色
[
全书主要分为三部分介绍Redis。第壹部分介绍Redis5中使用的数据结构,包括动态字符串、跳跃表、压缩列表、字典、整数集合和快速链表,详细介绍其基本结构及常见操作。第二部分为本书核心篇章,首先介绍了Redis5的启动流程,命令解析流程,之后对Redis5中的命令实现进行了全面的介绍,包括键命令、字符串命令、哈希表命令、列表命令、集合及有序集合命令、地理位置相关的GEO命令、统计相关的HyperLogLog命令。第三部分,主要介绍了Redis5的一些特性及使用,包括事务、持久化、主从复制以及集群等。
]
内容简介
[
全书主要分为三部分介绍Redis。第壹部分介绍Redis5中使用的数据结构,包括动态字符串、跳跃表、压缩列表、字典、整数集合和快速链表,详细介绍其基本结构及常见操作。第二部分为本书核心篇章,首先介绍了Redis5的启动流程,命令解析流程,之后对Redis5中的命令实现进行了全面的介绍,包括键命令、字符串命令、哈希表命令、列表命令、集合及有序集合命令、地理位置相关的GEO命令、统计相关的HyperLogLog命令。第三部分,主要介绍了Redis5的一些特性及使用,包括事务、持久化、主从复制以及集群等。
]
作者简介
[
陈雷,好未来学而思网校增长研发负责人,清华与北京邮电大学硕士,曾在百度、腾讯和滴滴等公司工作,12年后端架构经验。著有《PHP7底层设计与源码实现》。
]
目录
本书赞誉序前言第1章 引言11.1 Redis简介11.2 Redis 5.0的新特性21.3 Redis源码概述31.4 Redis安装与调试41.5 本章小结6第2章 简单动态字符串72.1 数据结构72.2 基本操作112.2.1 创建字符串112.2.2 释放字符串122.2.3 拼接字符串122.2.4 其余API152.3 本章小结15第3章 跳跃表173.1 简介173.2 跳跃表节点与结构193.2.1 跳跃表节点193.2.2 跳跃表结构203.3 基本操作203.3.1 创建跳跃表213.3.2 插入节点223.3.3 删除节点283.3.4 删除跳跃表303.4 跳跃表的应用313.5 本章小结32第4章 压缩列表334.1 压缩列表的存储结构334.2 结构体354.3 基本操作374.3.1 创建压缩列表374.3.2 插入元素384.3.3 删除元素424.3.4 遍历压缩列表444.4 连锁更新444.5 本章小结45第5章 字典475.1 基本概念475.1.1 数组485.1.2 Hash函数495.1.3 Hash冲突515.2 Redis字典的实现525.3 基本操作555.3.1 字典初始化555.3.2 添加元素565.3.3 查找元素605.3.4 修改元素615.3.5 删除元素615.4 字典的遍历625.4.1 迭代器遍历625.4.2 间断遍历655.5 API列表705.6 本章小结71第6章 整数集合726.1 数据存储726.2 基本操作756.2.1 查询元素756.2.2 添加元素786.2.3 删除元素826.2.4 常用API836.3 本章小结85第7章 quicklist的实现867.1 quicklist简介867.2 数据存储877.3 数据压缩917.3.1 压缩927.3.2 解压缩937.4 基本操作947.4.1 初始化947.4.2 添加元素957.4.3 删除元素967.4.4 更改元素987.4.5 查找元素997.4.6 常用API1007.5 本章小结101第8章 Stream1028.1 Stream简介1028.1.1 Stream底层结构listpack1038.1.2 Stream底层结构Rax简介1048.1.3 Stream结构1088.2 Stream底层结构listpack的实现1128.2.1 初始化1128.2.2 增删改操作1128.2.3 遍历操作1138.2.4 读取元素1138.3 Stream底层结构Rax的实现1148.3.1 初始化1148.3.2 查找元素1148.3.3 添加元素1168.3.4 删除元素1188.3.5 遍历元素1208.4 Stream结构的实现1238.4.1 初始化1248.4.2 添加元素1248.4.3 删除元素1258.4.4 查找元素1288.4.5 遍历1298.5 本章小结131第9章 命令处理生命周期1329.1 基本知识1329.1.1 对象结构体robj1329.1.2 客户端结构体client1369.1.3 服务端结构体redisServer1389.1.4 命令结构体redisCommand1399.1.5 事件处理1419.2 server启动过程1499.2.1 server初始化1499.2.2 启动监听1529.3 命令处理过程1559.3.1 命令解析1569.3.2 命令调用1599.3.3 返回结果1619.4 本章小结163第10章 键相关命令的实现16410.1 对象结构体和数据库结构体回顾16410.1.1 对象结构体redisObject16410.1.2 数据库结构体redisDb16610.2 查看键信息16610.2.1 查看键属性16610.2.2 查看键类型16910.2.3 查看键过期时间17010.3 设置键信息17110.3.1 设置键过期时间17110.3.2 删除键过期时间17210.3.3 重命名键17310.3.4 修改键*后访问17310.4 查找键17410.4.1 判断键是否存在17410.4.2 查找符合模式的键17510.4.3 遍历键17610.4.4 随机取键17710.5 操作键17810.5.1 删除键17810.5.2 序列化/反序列化键18210.5.3 移动键18310.5.4 键排序18510.6 本章小结187第11章 字符串相关命令的实现18811.1 相关命令介绍18811.2 设置字符串18911.2.1 set命令18911.2.2 mset命令19511.3 修改字符串19611.3.1 append命令19611.3.2 setrange命令19711.3.3 计数器命令19711.4 字符串获取19911.4.1 get命令19911.4.2 getset命令19911.4.3 getrange命令19911.4.4 strlen命令20011.4.5 mget命令20111.5 字符串位操作20111.5.1 setbit命令20111.5.2 getbit命令20311.5.3 bitpos命令20311.5.4 bitcount命令20511.5.5 bitop命令20811.5.6 bitfield命令20911.6 本章小结212第12章 散列表相关命令的实现21312.1 简介21312.1.1 底层存储21312.1.2 底层存储转换21512.1.3 接口说明21512.2 设置命令21612.3 读取命令21712.3.1 hexists命令21812.3.2 hget/hmget命令21812.3.3 hkeys/hvals/hgetall命令21912.3.4 hlen命令22012.3.5 hscan命令22012.4 删除命令22112.5 自增命令22212.6 本章小结224第13章 列表相关命令的实现22513.1 相关命令介绍22513.1.1 命令列表22513.1.2 栈和队列命令列表22613.2 push/pop相关命令22813.2.1 push类命令的实现22813.2.2 pop类命令的实现22913.2.3 阻塞push/pop类命令的实现23013.3 获取列表数据23413.3.1 获取单个元素23413.3.2 获取多个元素23513.3.3 获取列表长度23613.4 操作列表23613.4.1 设置元素23713.4.2 插入元素23713.4.3 删除元素23813.4.4 裁剪列表23913.5 本章小结240第14章 集合相关命令的实现24114.1 相关命令介绍24114.2 集合运算25414.2.1 交集25414.2.2 并集25814.2.3 差集26014.3 本章小结263第15章 有序集合相关命令的实现26415.1 相关命令介绍26415.2 基本操作27215.2.1 添加成员27215.2.2 删除成员27515.2.3 基数统计27615.2.4 数量计算27715.2.5 计数器27915.2.6 获取排名27915.2.7 获取分值27915.2.8 遍历28015.3 批量操作28015.3.1 范围查找28015.3.2 范围删除28315.4 集合运算28415.5 本章小结284第16章 GEO相关命令28516.1 基础知识28516.2 命令实现28816.2.1 使用geoadd添加坐标28816.2.2 计算坐标的geohash29116.2.3 使用geopos查询位置经纬度29216.2.4 使用geodist计算两点距离29516.2.5 使用georadius/georadius-bymembe查询范围内元素29516.3 本章小结297第17章 HyperLogLog相关命令的实现29817.1 基本原理29817.1.1 算法演进29917.1.2 线性计数算法29917.1.3 对数计数算法30017.1.4 自适应计数算法30217.1.5 超对数计数算法30217.2 HLL Redis实现30217.2.1 HLL头对象30317.2.2 稀疏编码30417.2.3 密集编码30617.2.4 内部编码30817.2.5 编码转换30917.3 命令实现31017.3.1 添加基数31017.3.2 近似基数31117.3.3 合并基数31317.4 本章小结314第18章 数据流相关命令的实现31518.1 相关命令介绍31518.2 基本操作命令原理分析32318.2.1 添加消息32318.2.2 删除消息32518.2.3 范围查找32618.2.4 获取队列信息32718.2.5 长度统计32718.2.6 剪切消息32818.3 分组命令原理分析32818.3.1 分组管理32818.3.2 消费消息33018.3.3 响应消息33118.3.4 获取未响应消息列表33118.3.5 修改指定未响应消息归属33118.4 本章小结332第19章 其他命令33319.1 事务33319.1.1 事务简介33319.1.2 事务命令实现33419.2 发布-订阅命令实现33919.3 Lua脚本34519.3.1 初始化Lua环境34519.3.2 在Lua中调用Redis命令34719.3.3 Redis和Lua数据类型转换34919.3.4 命令实现35119.4 本章小结356第20章 持久化35720.1 RDB35820.1.1 RDB执行流程35820.1.2 RDB文件结构35920.2 AOF36720.2.1 AOF执行流程36820.2.2 AOF重写36920.3 RDB与AOF相关配置指令37220.4 本章小结374第21章 主从复制37521.1 主从复制功能实现37521.2 主从复制源码基础37821.3 slaver源码分析38221.4 master源码分析38821.5 本章小结391第22章 哨兵和集群39222.1 哨兵39222.1.1 哨兵简介39322.1.2 代码流程39422.1.3 主从切换39622.1.4 常用命令39922.2 集群40022.2.1 集群简介40122.2.2 代码流程40222.2.3 主从切换40422.2.4 副本漂移40622.2.5 分片迁移40722.2.6 通信数据包类型40922.3 本章小结415
封面
书名:数据库技术丛书REDIS5设计与源码分析
作者:陈雷
页数:415
定价:¥139.0
出版社:机械工业出版社
出版日期:2018-04-01
ISBN:9787111632788
PDF电子书大小:104MB 高清扫描完整版
本文标题:《数据库技术丛书REDIS5设计与源码分析》PDF下载
资源仅供学习参考,禁止用于商业用途,请在下载后24小时内删除!