本書贊譽
序
前言
第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
· · · · · · (
收起)