標籤:使用者 主從 處理 丟失 不包含 命令 slot code class
一、使用版本:3.0.0.0
二、基本概念:
- Redis 叢集是一個可以在多個 Redis 節點之間進行資料共用的設施(installation)。
- Redis 叢集使用資料分區(sharding)而非一致性雜湊(consistency hashing)來實現: 一個 Redis 叢集包含 16384 個雜湊槽(hash slot), 資料庫中的每個鍵都屬於這 16384 個雜湊槽的其中一個, 叢集使用公式 CRC16(key) % 16384 來計算鍵 key 屬於哪個槽, 其中CRC16(key) 語句用於計算鍵 key 的 CRC16 校正和
- 叢集中的每個節點負責處理一部分雜湊槽。 舉個例子, 一個叢集可以有三個雜湊槽, 其中:
- 節點 A 負責處理 0 號至 5500 號雜湊槽。
- 節點 B 負責處理 5501 號至 11000 號雜湊槽。
- 節點 C 負責處理 11001 號至 16384 號雜湊槽。
- 節點的添加和移除
- 如果使用者將新節點 D 添加到叢集中, 那麼叢集只需要將節點 A 、B 、 C 中的某些槽移動到節點 D 就可以了。
- 如果使用者要從叢集中移除節點 A , 那麼叢集只需要將節點 A 中的所有雜湊槽移動到節點 B 和節點 C , 然後再移除空白(不包含任何雜湊槽)的節點 A 就可以了。
- 主從節點的作用
- 假如在建立叢集的時候(或者至少在節點 B 下線之前), 我們為主節點 B 添加了從節點 B1 , 那麼當主節點 B 下線的時候, 叢集就會將 B1 設定為新的主節點, 並讓它代替下線的主節點 B , 繼續處理
5501 號至 11000 號的雜湊槽, 這樣叢集就不會因為主節點 B 的下線而無法正常運作了。
- 非同步複製(雖然是非同步複製,但是執行寫命令和複製命令到從節點幾乎是同時執行,所以一般不會遺失資料)
- 用戶端向主節點 B 發送一條寫命令。
- 主節點 B 執行寫命令,並向用戶端返回命令回複。
- 主節點 B 將剛剛執行的寫命令複製給它的從節點 B1 、 B2 和 B3 。
三、參考資料:http://redisdoc.com/topic/cluster-tutorial.html http://www.redis.net.cn/ http://redis.io/
來自為知筆記(Wiz)
Redis叢集(一):基本概念