Redis Cluster:
1.集權解決的問題(併發量、數據量)
2.HASH數據分佈方式
2.1、節點取餘(客戶端分片:哈希-取餘;節點伸縮:數據節點關係變化,導致數據遷移;遷移數量和添加的節點數量有關:建議翻倍擴容)
2.2、一致性哈希(客戶端分片:哈希-順時針[優化取餘];節點伸縮:隻影響臨近節點,但是還是有數據遷移;翻倍伸縮:保證最小遷移數據和負載均衡)
2.3、虛擬槽分區(預設虛擬槽:每個槽映射一個數據子集,一般比節點數據大;良好的哈希函數:例如CRC16;服務端管理節點、槽、數據:例如Redis Cluster)
3.Redis Cluster特性(複製、高可用、分片:多個節點進行讀寫)
4.Redis Cluster架構(節點:各個redis節點、meet:節點之間通訊判斷、指派槽:根據hash計算得到一定值對應一定的槽、複製)
5.Redis Cluster安裝
5.1、原生安裝:
5.1.1 單節點配置安裝
5.1.2 meet操作
5.1.3 分配槽
5.1.4 主從配置
5.2、Ruby環境安裝
5.2.1 下載、編譯、安裝Ruby
5.2.2 安裝rubygem redis
5.2.3 安裝redis-trib.rb
5.3、安裝方式對比
1 原聲命令安裝(理解redis cluster、生產環境不適用[步驟繁雜,容易出錯])
2 官方工具安裝(高校、準確)
3 其它(可視化部署········)
6.集羣伸縮原理(槽和數據在節點之間的移動)
7.集羣擴容
準備新節點-->加入集羣-->遷移槽和數據
7.1、新節點(集羣模式、配置和其它節點統一、啓動後是孤立節點)
7.2、加入集羣(cluster meet 127.0.0.1 7000)、進入節點客戶端查看(cluster nodes)、作用(爲它遷移槽和數據實現擴容、作爲從節點負責故障轉移)
7.3、遷移槽和數據
7.3.1 遷移槽計劃(平均槽數量)
7.3.2 遷移數據
A. 對目標節點發送[cluster setslot {slot} importing {sourceNodeId}]命令,讓目標節點準備導入槽的數據
B.對源節點發送[cluster setslot {slot} migrating {targetNodeId}]命令,讓源節點準備遷出槽的數據
C.源節點循環執行cluster getkeysinslot {slot} (count)命令,每次獲取count個屬於槽的鍵
D.在源節點上執行migrate {gargetIp} {targetPort} key 0 {timeout} 命令把指定key遷移
E.重複執行步驟C-D直到槽下所有的鍵數據遷移到目標節點
F.向集羣內所有主節點發送cluster setslot {slot} node {targetNodeId}命令,通知槽分配給目標節點
7.3.3 添加從節點
***********未學篇章*************
第10章 深入Redis Cluster
第11章 緩存設計與優化
第12章 Redis雲平臺CacheCloud
第14章 增補:Redis布隆過濾器
第15章 Redis開發規範
第16章 內存管理
第17章 開發運維常見坑