Redis設計與實現

Redis設計與實現

《Redis設計與實現》是2014年機械工業出版社出版的圖書,作者是黃健宏。本書講解了Redis的內部機制與實現方式,對Redis的大多數單機功能以及所有多機功能的實現原理進行了介紹,展示了這些功能的核心數據結構以及關鍵的算法思想,並給出大量參考信息。

內容簡介

本書 主要分為四大部分。第一部分“數據結構與對象”介紹了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 庫。

相關詞條

相關搜尋

熱門詞條

聯絡我們