1. 程式人生 > >Redis持久化、複製和叢集

Redis持久化、複製和叢集

1.開啟配置cluster-enabled啟用叢集功能,每個叢集中至少需要3個master才能正常執行 

2.啟動多個redis獨立節點,叢集會將當前節點記錄的叢集狀態持久化地儲存在指定檔案中,當前工作目錄下的nodes.conf檔案。每個節點對應的檔案必須同。 

redis連線任意一個節點檢視當前叢集狀態 
3.INFO cluster 

4.初使化叢集 redis-trib.rb create —replicas 1 ip:port ip:port ip:port [ip:port…] 
create表示要初使化叢集, —replicas表示每個master擁有一個slave。redis-trib.rb會輸出叢集分配方案,如果同意輸入yes。

獲得叢集中節點資訊 
CLUSTER NODES 

新增新節點,ip和port是叢集是任意節點的地址和埠 CLUSTER MEET ip port 

Redis將每個鍵名的效部分使用 CRC16演算法計算出雜湊值,然後對16384進行取取餘,使每個鍵都能分配到16384個插槽中,進行分配指定的節點處理。 
鍵的有效部分是指 
如果鍵名包含{符號,且在{符號後面存在}符號,並且{和}符號間至少有一個字元,則有效部分是指{和}之間的內容; 
如果不滿足上一條規則,那麼整個鍵名為有效部分 

分配slot 如果slot之前沒被分配過可以採用 
對點應節點執行,將指定slot分配給當前節點,如果slot分配過了就會報錯 
CLUSTER ADD SLOT S 
CLUSTER ADDSLOTS slot1 [slot2…] 
例: CLUSTER ADDSLOTS 100 101 

檢視slot分配情況 
CLUSTER SLOTS 
將slot從127.0.0.1:6379移到127.0.0.1:6380 
按提示執行後面步驟可完成slot的重分配 
redis-trib.rb reshard 127.0.0.1:6379 

-c引數支援叢集自動重定向,如果鍵不在該節點上,會自動重定請求,並返回結果,該過程對客戶端是透明的。 redis-cli -c -p 6379 
如果一個至少負責一個 solt的master停止服務,且沒有相應的slave可以進行故障恢復,則整個叢集會進入下線狀態無未能繼續工作。 
設定cluster-require-full-coverage no(預設為yes)使叢集在該情況下仍能工作。