Redis設計與實現 原文高清PDF 下載
阿新 • • 發佈:2021-12-24
獲取方式: https://pan.baidu.com/s/17GgLaNeqZY7VlCBoiu-ehA 密碼: 6wtr
《Redis設計與實現》對Redis的大多數單機功能以及所有多機功能的實現原理進行了介紹,展示了這些功能的核心資料結構以及關鍵的演算法思想。通過閱讀本書,讀者可以快速、有效地瞭解Redis的內部構造以及運作機制,這些知識可以幫助讀者更好、更高效地使用Redis。本書主要分為四大部分。第一部分“資料結構與物件”介紹了Redis中的各種物件及其資料結構,並說明這些資料結構如何影響物件的功能和效能。第二部分“單機資料庫的實現”對Redis實現單機資料庫的方法進行了介紹,包括資料庫、RDB持久化、AOF持久化、事件等。第三部分“多機資料庫的實現”對Redis的Sentinel、複製(replication)、叢集(cluster)三個多機功能進行了介紹。第四部分“獨立功能的實現”對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 命令的實現 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