內容簡介
本書 主要分為四大部分。第一部分“數據結構與對象”介紹了Redis中的各種對象及其數據結構,並說明這些數據結構如何影響對象的功能和性能。第二部分“單機資料庫的實現”對Redis實現單機資料庫的方法進行了介紹,包括資料庫、RDB持久化、AOF持久化、事件等。第三部分“多機資料庫的實現”對Redis的Sentinel、複製、集群三個多機功能進行了介紹。第四部分“獨立功能的實現”對Redis中各個相對獨立的功能模組進行了介紹,涉及發布與訂閱、事務、Lua腳本、排序、二進制位數組、慢查詢日誌、監視器等。
圖書目錄
第1章 引言 1
1.1 Redis版本說明 1
1.2 章節編排 1
1.3 推薦的閱讀方法 4
1.4 行文規則 4
1.5 配套網站 5
第一部分 數據結構與對象
第2章 簡單動態字元串 8
2.1 SDS的定義 9
2.2 SDS與C字元串的區別 10
2.3 SDS API 17
2.4 重點回顧 18
2.5 參考資料 18
第3章 鍊表 19
3.1 鍊表和鍊表節點的實現 20
3.2 鍊表和鍊表節點的API 21
3.3 重點回顧 22
第4章 字典 23
4.1 字典的實現 24
4.2 哈希算法 27
4.3 解決鍵衝突 28
4.4 rehash 29
4.5 漸進式rehash 32
4.6 字典API 36
4.7 重點回顧 37
第5章 跳躍表 38
5.1 跳躍表的實現 39
5.2 跳躍表API 44
5.3 重點回顧 45
第6章 整數集合 46
6.1 整數集合的實現 46
6.2 升級 48
6.3 升級的好處 50
6.4 降級 51
6.5 整數集合API 51
6.6 重點回顧 51
第7章 壓縮列表 52
7.1 壓縮列表的構成 52
7.2 壓縮列表節點的構成 54
7.3 連鎖更新 57
7.4 壓縮列表API 59
7.5 重點回顧 59
第8章 對象 60
8.1 對象的類型與編碼 60
8.2 字元串對象 64
8.3 列表對象 68
8.4 哈希對象 71
8.5 集合對象 75
8.6 有序集合對象 77
8.7 類型檢查與命令多態 81
8.8 記憶體回收 84
8.9 對象共享 85
8.10 對象的空轉時長 87
8.11 重點回顧 88
第二部分 單機資料庫的實現
第9章 資料庫 90
9.1 伺服器中的資料庫 90
9.2 切換資料庫 91
9.3 資料庫鍵空間 93
9.4 設定鍵的生存時間或過期時間 99
9.5 過期鍵刪除策略 107
9.6 Redis的過期鍵刪除策略 108
9.7 AOF、RDB和複製功能對過期鍵的處理 111
9.8 資料庫通知 113
9.9 重點回顧 117
第10章 RDB持久化 118
10.1 RDB 檔案的創建與載入 119
10.2 自動間隔性保存 121
10.3 RDB 檔案結構 125
10.4 分析RDB檔案 133
10.5 重點回顧 137
10.6 參考資料 137
第11章 AOF持久化 138
11.1 AOF持久化的實現 139
11.2 AOF檔案的載入與數據還原 142
11.3 AOF重寫 143
11.4 重點回顧 150
第12章 事件 151
12.1 檔案事件 151
12.2 時間事件 156
12.3 事件的調度與執行 159
12.4 重點回顧 161
12.5 參考資料 161
第13章 客戶端 162
13.1 客戶端屬性 163
13.2 客戶端的創建與關閉 172
13.3 重點回顧 174
第14章 伺服器 176
14.1 命令請求的執行過程 176
14.2 serverCron函式 184
14.3 初始化伺服器 192
14.4 重點回顧 196
第三部分 多機資料庫的實現
第15章 複製 198
15.1 舊版複製功能的實現 199
15.2 舊版複製功能的缺陷 201
15.3 新版複製功能的實現 203
15.4 部分重同步的實現 204
15.5 PSYNC 命令的實現 209
15.6 複製的實現 211
15.7 心跳檢測 216
15.8 重點回顧 218
第16章 Sentinel 219
16.1 啟動並初始化Sentinel 220
16.2 獲取主伺服器信息 227
16.3 獲取從伺服器信息 229
16.4 向主伺服器和從伺服器傳送信息 230
16.5 接收來自主伺服器和從伺服器的頻道信息 231
16.6 檢測主觀下線狀態 234
16.7 檢查客觀下線狀態 236
16.8 選舉領頭Sentinel 238
16.9 故障轉移 240
16.10 重點回顧 243
16.11 參考資料 244
第17章 集群 245
17.1 節點 245
17.2 槽指派 251
17.3 在集群中執行命令 258
17.4 重新分片 265
17.5 ASK錯誤 267
17.6 複製與故障轉移 273
17.7 訊息 281
17.8 重點回顧 288
第四部分 獨立功能的實現
第18章 發布與訂閱 290
18.1 頻道的訂閱與退訂 292
18.2 模式的訂閱與退訂 295
18.3 傳送訊息 298
18.4 查看訂閱信息 300
18.5 重點回顧 303
18.6 參考資料 304
第19章 事務 305
19.1 事務的實現 306
19.2 WATCH 命令的實現 310
19.3 事務的ACID 性質 314
19.4 重點回顧 319
19.5 參考資料 320
第20章 Lua腳本 321
20.1 創建並修改Lua 環境 322
20.2 Lua 環境協作組件 327
20.3 EVAL命令的實現 329
20.4 EVALSHA 命令的實現 332
20.5 腳本管理命令的實現 333
20.6 腳本複製 336
20.7 重點回顧 342
20.8 參考資料 343
第21章 排序 344
21.1 SORT <key> 命令的實現 345
21.2 ALPHA 選項的實現 347
21.3 ASC 選項和DESC 選項的實現 348
21.4 BY選項的實現 350
21.5 帶有ALPHA 選項的BY 選項的實現 352
21.6 LIMIT 選項的實現 353
21.7 GET選項的實現 355
21.8 STORE 選項的實現 358
21.9 多個選項的執行順序 359
21.10 重點回顧 361
第22章 二進制位數組 362
22.1 位數組的表示 363
22.2 GETBIT命令的實現 365
22.3 SETBIT 命令的實現 366
22.4 BITCOUNT 命令的實現 369
22.5 BITOP 命令的實現 376
22.6 重點回顧 377
22.7 參考資料 377
第23章 慢查詢日誌 378
23.1 慢查詢記錄的保存 380
23.2 慢查詢日誌的閱覽和刪除 382
23.3 添加新日誌 383
23.4 重點回顧 385
第24章 監視器 386
24.1 成為監視器 387
24.2 向監視器傳送命令信息 387
24.3 重點回顧 388
作者簡介
黃健宏 軟體開發者,他喜歡函式式編程,熱愛開源軟體。出於對資料庫的強烈興趣,他開始閱讀和分析 Redis 原始碼,並對 Redis 2.6 和 Redis 3.0 的原始碼進行了詳細注釋。他翻譯並維護著 Redis 中文文檔網站 ,編寫了 OORedis 庫。