会员   密码 您忘记密码了吗?
1,582,941 本书已上架      购物流程 | 常见问题 | 联系我们 | 关于我们 | 用户协议

有店 App


当前分类

商品分类

浏览历史

当前位置: 首页 > 简体书 > Redis5設計與源碼分析
Redis5設計與源碼分析
上一张
下一张
prev next

Redis5設計與源碼分析

作者: 陳雷
出版社: 機械工業出版社
出版日期: 2019-08-01
商品库存: 点击查询库存
以上库存为海外库存属流动性。
可选择“空运”或“海运”配送,空运费每件商品是RM14。
配送时间:空运约8~12个工作天,海运约30个工作天。
(以上预计配送时间不包括出版社库存不足需调货及尚未出版的新品)
定价:   NT834.00
市场价格: RM149.93
本店售价: RM133.44
购买数量:
collect Add to cart Add booking
详细介绍 商品属性 商品标记
內容簡介

全書主要分為三部分介紹Redis。第壹部分介紹Redis5中使用的資料結構,包括動態字串、跳躍表、壓縮清單、字典、整數集合和快速鏈表,詳細介紹其基本結構及常見操作。第二部分為本書核心篇章,首先介紹了Redis5的啟動流程,命令解析流程,之後對Redis5中的命令實現進行了全面的介紹,包括鍵命令、字串命令、雜湊表命令、清單命令、集合及有序集合命令、地理位置相關的GEO命令、統計相關的HyperLogLog命令。第三部分,主要介紹了Redis5的一些特性及使用,包括事務、持久化、主從複製以及集群等。
 


作者介紹

陳雷

好未來學而思網校增長研發負責人,清華與北京郵電大學碩士,曾在百度、騰訊和滴滴等公司工作,12年後端架構經驗。著有《PHP7底層設計與源碼實現》。
 


目錄

本書讚譽

前言

第1章 引言1
1.1 Redis簡介1
1.2 Redis 5.0的新特性2
1.3 Redis源碼概述3
1.4 Redis安裝與調試4
1.5 本章小結6

第2章 簡單動態字串7
2.1 資料結構7
2.2 基本操作11
2.2.1 創建字串11
2.2.2 釋放字串12
2.2.3 拼接字串12
2.2.4 其餘API15
2.3 本章小結15

第3章 跳躍表17
3.1 簡介17
3.2 跳躍表節點與結構19
3.2.1 跳躍表節點19
3.2.2 跳躍表結構20
3.3 基本操作20
3.3.1 創建跳躍表21
3.3.2 插入節點22
3.3.3 刪除節點28
3.3.4 刪除跳躍表30
3.4 跳躍表的應用31
3.5 本章小結32

第4章 壓縮列表33
4.1 壓縮清單的存儲結構33
4.2 結構體35
4.3 基本操作37
4.3.1 創建壓縮列表37
4.3.2 插入元素38
4.3.3 刪除元素42
4.3.4 遍歷壓縮列表44
4.4 連鎖更新44
4.5 本章小結45

第5章 字典47
5.1 基本概念47
5.1.1 陣列48
5.1.2 Hash函數49
5.1.3 Hash衝突51
5.2 Redis字典的實現52
5.3 基本操作55
5.3.1 字典初始化55
5.3.2 添加元素56
5.3.3 查找元素60
5.3.4 修改元素61
5.3.5 刪除元素61
5.4 字典的遍歷62
5.4.1 反覆運算器遍歷62
5.4.2 間斷遍歷65
5.5 API列表70
5.6 本章小結71

第6章 整數集合72
6.1 資料存儲72
6.2 基本操作75
6.2.1 查詢元素75
6.2.2 添加元素78
6.2.3 刪除元素82
6.2.4 常用API83
6.3 本章小結85

第7章 quicklist的實現86
7.1 quicklist簡介86
7.2 資料存儲87
7.3 資料壓縮91
7.3.1 壓縮92
7.3.2 解壓縮93
7.4 基本操作94
7.4.1 初始化94
7.4.2 添加元素95
7.4.3 刪除元素96
7.4.4 更改元素98
7.4.5 查找元素99
7.4.6 常用API100
7.5 本章小結101

第8章 Stream102
8.1 Stream簡介102
8.1.1 Stream底層結構listpack103
8.1.2 Stream底層結構Rax簡介104
8.1.3 Stream結構108
8.2 Stream底層結構listpack的實現112
8.2.1 初始化112
8.2.2 增刪改操作112
8.2.3 遍歷操作113
8.2.4 讀取元素113
8.3 Stream底層結構Rax的實現114
8.3.1 初始化114
8.3.2 查找元素114
8.3.3 添加元素116
8.3.4 刪除元素118
8.3.5 遍歷元素120
8.4 Stream結構的實現123
8.4.1 初始化124
8.4.2 添加元素124
8.4.3 刪除元素125
8.4.4 查找元素128
8.4.5 遍歷129
8.5 本章小結131

第9章 命令處理生命週期132
9.1 基本知識132
9.1.1 物件結構體robj132
9.1.2 用戶端結構體client136
9.1.3 服務端結構體redisServer138
9.1.4 命令結構體redisCommand139
9.1.5 事件處理141
9.2 server啟動過程149
9.2.1 server初始化149
9.2.2 啟動監聽152
9.3 命令處理過程155
9.3.1 命令解析156
9.3.2 命令調用159
9.3.3 返回結果161
9.4 本章小結163

第10章 鍵相關命令的實現164
10.1 物件結構體和資料庫結構體回顧164
10.1.1 物件結構體redisObject164
10.1.2 資料庫結構體redisDb166
10.2 查看鍵信息166
10.2.1 查看鍵屬性166
10.2.2 查看鍵類型169
10.2.3 查看鍵過期時間170
10.3 設置鍵資訊171
10.3.1 設置鍵過期時間171
10.3.2 刪除鍵過期時間172
10.3.3 重命名鍵173
10.3.4 修改鍵最後訪問173
10.4 查找鍵174
10.4.1 判斷鍵是否存在174
10.4.2 查找符合模式的鍵175
10.4.3 遍歷鍵176
10.4.4 隨機取鍵177
10.5 操作鍵178
10.5.1 刪除鍵178
10.5.2 序列化/反序列化鍵182
10.5.3 移動鍵183
10.5.4 鍵排序185
10.6 本章小結187

第11章 字串相關命令的實現188
11.1 相關命令介紹188
11.2 設置字串189
11.2.1 set命令189
11.2.2 mset命令195
11.3 修改字串196
11.3.1 append命令196
11.3.2 setrange命令197
11.3.3 計數器命令197
11.4 字串獲取199
11.4.1 get命令199
11.4.2 getset命令199
11.4.3 getrange命令199
11.4.4 strlen命令200
11.4.5 mget命令201
11.5 字串位元操作201
11.5.1 setbit命令201
11.5.2 getbit命令203
11.5.3 bitpos命令203
11.5.4 bitcount命令205
11.5.5 bitop命令208
11.5.6 bitfield命令209
11.6 本章小結212

第12章 散列表相關命令的實現213
12.1 簡介213
12.1.1 底層存儲213
12.1.2 底層存儲轉換215
12.1.3 介面說明215
12.2 設置命令216
12.3 讀取命令217
12.3.1 hexists命令218
12.3.2 hget/hmget命令218
12.3.3 hkeys/hvals/hgetall命令219
12.3.4 hlen命令220
12.3.5 hscan命令220
12.4 刪除命令221
12.5 自增命令222
12.6 本章小結224

第13章 列表相關命令的實現225
13.1 相關命令介紹225
13.1.1 命令列表225
13.1.2 棧和佇列命令清單226
13.2 push/pop相關命令228
13.2.1 push類命令的實現228
13.2.2 pop類命令的實現229
13.2.3 阻塞push/pop類命令的實現230
13.3 獲取清單資料234
13.3.1 獲取單個元素234
13.3.2 獲取多個元素235
13.3.3 獲取列表長度236
13.4 操作列表236
13.4.1 設置元素237
13.4.2 插入元素237
13.4.3 刪除元素238
13.4.4 裁剪列表239
13.5 本章小結240

第14章 集合相關命令的實現241
14.1 相關命令介紹241
14.2 集合運算254
14.2.1 交集254
14.2.2 並集258
14.2.3 差集260
14.3 本章小結263

第15章 有序集合相關命令的實現264
15.1 相關命令介紹264
15.2 基本操作272
15.2.1 添加成員272
15.2.2 刪除成員275
15.2.3 基數統計276
15.2.4 數量計算277
15.2.5 計數器279
15.2.6 獲取排名279
15.2.7 獲取分值279
15.2.8 遍歷280
15.3 批量操作280
15.3.1 範圍查找280
15.3.2 範圍刪除283
15.4 集合運算284
15.5 本章小結284

第16章 GEO相關命令285
16.1 基礎知識285
16.2 命令實現288
16.2.1 使用geoadd添加座標288
16.2.2 計算座標的geohash291
16.2.3 使用geopos查詢位置經緯度292
16.2.4 使用geodist計算兩點距離295
16.2.5 使用georadius/georadius-bymembe查詢範圍內元素295
16.3 本章小結297

第17章 HyperLogLog相關命令的實現298
17.1 基本原理298
17.1.1 演算法演進299
17.1.2 線性計數演算法299
17.1.3 對數計數演算法300
17.1.4 自我調整計數演算法302
17.1.5 超對數計數演算法302
17.2 HLL Redis實現302
17.2.1 HLL頭對象303
17.2.2 稀疏編碼304
17.2.3 密集編碼306
17.2.4 內部編碼308
17.2.5 編碼轉換309
17.3 命令實現310
17.3.1 添加基數310
17.3.2 近似基數311
17.3.3 合併基數313
17.4 本章小結314

第18章 資料流程相關命令的實現315
18.1 相關命令介紹315
18.2 基本操作命令原理分析323
18.2.1 添加消息323
18.2.2 刪除消息325
18.2.3 範圍查找326
18.2.4 獲取佇列資訊327
18.2.5 長度統計327
18.2.6 剪切消息328
18.3 分組命令原理分析328
18.3.1 分組管理328
18.3.2 消費消息330
18.3.3 回應訊息331
18.3.4 獲取未回應訊息列表331
18.3.5 修改指定未回應訊息歸屬331
18.4 本章小結332

第19章 其他命令333
19.1 事務333
19.1.1 事務簡介333
19.1.2 事務命令實現334
19.2 發佈-訂閱命令實現339
19.3 Lua腳本345
19.3.1 初始化Lua環境345
19.3.2 在Lua中調用Redis命令347
19.3.3 Redis和Lua資料類型轉換349
19.3.4 命令實現351
19.4 本章小結356

第20章 持久化357
20.1 RDB358
20.1.1 RDB執行流程358
20.1.2 RDB檔結構359
20.2 AOF367
20.2.1 AOF執行流程368
20.2.2 AOF重寫369
20.3 RDB與AOF相關配置指令372
20.4 本章小結374

第21章 主從複製375
21.1 主從複製功能實現375
21.2 主從複製源碼基礎378
21.3 slaver源碼分析382
21.4 master源碼分析388
21.5 本章小結391

第22章 哨兵和集群392
22.1 哨兵392
22.1.1 哨兵簡介393
22.1.2 代碼流程394
22.1.3 主從切換396
22.1.4 常用命令399
22.2 集群400
22.2.1 集群簡介401
22.2.2 代碼流程402
22.2.3 主從切換404
22.2.4 副本漂移406
22.2.5 分片遷移407
22.2.6 通信資料包類型409
22.3 本章小結415