* 節點通過握手來將其他節點添加到自己所處的集群當中。
* 集群中的?`16384`?個槽可以分別指派給集群中的各個節點, 每個節點都會記錄哪些槽指派給了自己, 而哪些槽又被指派給了其他節點。
* 節點在接到一個命令請求時, 會先檢查這個命令請求要處理的鍵所在的槽是否由自己負責, 如果不是的話, 節點將向客戶端返回一個`MOVED`?錯誤,?`MOVED`?錯誤攜帶的信息可以指引客戶端轉向至正在負責相關槽的節點。
* 對 Redis 集群的重新分片工作是由客戶端執行的, 重新分片的關鍵是將屬于某個槽的所有鍵值對從一個節點轉移至另一個節點。
* 如果節點 A 正在遷移槽?`i`?至節點 B , 那么當節點 A 沒能在自己的數據庫中找到命令指定的數據庫鍵時, 節點 A 會向客戶端返回一個?`ASK`?錯誤, 指引客戶端到節點 B 繼續查找指定的數據庫鍵。
* `MOVED`?錯誤表示槽的負責權已經從一個節點轉移到了另一個節點, 而?`ASK`?錯誤只是兩個節點在遷移槽的過程中使用的一種臨時措施。
* 集群里的從節點用于復制主節點, 并在主節點下線時, 代替主節點繼續處理命令請求。
* 集群中的節點通過發送和接收消息來進行通訊, 常見的消息包括?`MEET`?、?`PING`?、?`PONG`?、?`PUBLISH`?、?`FAIL`?五種。
- 介紹
- 前言
- 致謝
- 簡介
- 第一部分:數據結構與對象
- 簡單動態字符串
- SDS 的定義
- SDS 與 C 字符串的區別
- SDS API
- 重點回顧
- 參考資料
- 鏈表
- 鏈表和鏈表節點的實現
- 鏈表和鏈表節點的 API
- 重點回顧
- 字典
- 字典的實現
- 哈希算法
- 解決鍵沖突
- rehash
- 漸進式 rehash
- 字典 API
- 重點回顧
- 跳躍表
- 跳躍表的實現
- 跳躍表 API
- 重點回顧
- 整數集合
- 整數集合的實現
- 升級
- 升級的好處
- 降級
- 整數集合 API
- 重點回顧
- 壓縮列表
- 壓縮列表的構成
- 壓縮列表節點的構成
- 連鎖更新
- 壓縮列表 API
- 重點回顧
- 對象
- 對象的類型與編碼
- 字符串對象
- 列表對象
- 哈希對象
- 集合對象
- 有序集合對象
- 類型檢查與命令多態
- 內存回收
- 對象共享
- 對象的空轉時長
- 重點回顧
- 第二部分:單機數據庫的實現
- 數據庫
- 數據庫鍵空間
- 重點回顧
- RDB 持久化
- RDB 文件結構
- 重點回顧
- AOF 持久化
- AOF 持久化的實現
- 重點回顧
- 事件
- 文件事件
- 重點回顧
- 參考資料
- 客戶端
- 客戶端屬性
- 重點回顧
- 服務器
- 命令請求的執行過程
- 重點回顧
- 第三部分:多機數據庫的實現
- 復制
- 舊版復制功能的實現
- 重點回顧
- Sentinel
- 啟動并初始化 Sentinel
- 重點回顧
- 參考資料
- 集群
- 節點
- 重點回顧
- 第四部分:獨立功能的實現
- 發布與訂閱
- 頻道的訂閱與退訂
- 重點回顧
- 參考資料
- 事務
- 事務的實現
- 重點回顧
- Lua 腳本
- 創建并修改 Lua 環境
- 重點回顧
- 排序
- SORT <key> 命令的實現
- 重點回顧
- 二進制位數組
- GETBIT 命令的實現
- 重點回顧
- 慢查詢日志
- 慢查詢記錄的保存
- 慢查詢日志的閱覽和刪除
- 添加新日志
- 重點回顧
- 監視器
- 成為監視器
- 向監視器發送命令信息
- 重點回顧
- 源碼、相關資源和勘誤