1. 程式人生 > >Redis叢集常見操作

Redis叢集常見操作

常見設定

設定最大記憶體

maxmemory 2548000000

如果不需要持久化時,去掉持久化功能

註釋掉save行

啟動時作用守護程序

daemonize yes

叢集配置

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

叢集設定

yum -y install ruby ruby-devel rubygems rpm-build 
gem install redis  
redis-trib.rb  create  --replicas  1
10.1.xx.xx:7000 10.1.xx.xx:7000 10.1.xx.xx:7000 10.1.xx.xx:7000 10.1.xx.xx:7000 10.1.xx.xx:7000

常見命令

檢視叢集狀態

redis/src/redis-cli -p 7000 cluster nodes

叢集資訊

cluster info

檢視叢集key的分佈

./redis-trib.rb info ip:port
響應
10.1.xx.xx:7005 (6960df47...) -> 196 keys | 5461 slots | 1 slaves.
10.1.xx.xx:7003 (d0c98f2e...) ->
204 keys | 5462 slots | 1 slaves. 10.1.xx.xx:7002 (a20e2c37...) -> 216 keys | 5461 slots | 1 slaves.

其它命令

//叢集(cluster)
CLUSTER INFO 列印叢集的資訊
CLUSTER NODES 列出叢集當前已知的所有節點(node),以及這些節點的相關資訊。
//節點(node)
CLUSTER MEET 將 ip 和 port 所指定的節點新增到叢集當中,讓它成為叢集的一份子。
CLUSTER FORGET 從叢集中移除 node_id 指定的節點。
CLUSTER REPLICATE 將當前節點設定為 node_id 指定的節點的從節點。
CLUSTER SAVECONFIG 將節點的配置檔案儲存到硬盤裡面。
//槽(slot)
CLUSTER ADDSLOTS [slot ...
] 將一個或多個槽(slot)指派(assign)給當前節點。 CLUSTER DELSLOTS [slot ...] 移除一個或多個槽對當前節點的指派。 CLUSTER FLUSHSLOTS 移除指派給當前節點的所有槽,讓當前節點變成一個沒有指派任何槽的節點。 CLUSTER SETSLOT NODE 將槽 slot 指派給 node_id 指定的節點,如果槽已經指派給另一個節點,那麼先讓另一個節點刪除該槽>,然後再進行指派。 CLUSTER SETSLOT MIGRATING 將本節點的槽 slot 遷移到 node_id 指定的節點中。 CLUSTER SETSLOT IMPORTING 從 node_id 指定的節點中匯入槽 slot 到本節點。 CLUSTER SETSLOT STABLE 取消對槽 slot 的匯入(import)或者遷移(migrate)。 //鍵 (key) CLUSTER KEYSLOT 計算鍵 key 應該被放置在哪個槽上。 CLUSTER COUNTKEYSINSLOT 返回槽 slot 目前包含的鍵值對數量。 CLUSTER GETKEYSINSLOT 返回 count 個 slot 槽中的鍵。

手動故障轉義

Redis 叢集支援使用 CLUSTER FAILOVER 命令來手動故障轉移,必須在故障轉移的主服務的其中一個從伺服器上執行,執行完成後,則主節點變成從節點。
原理: 連線到正在故障轉移的主伺服器的客戶端停止了,同時主伺服器傳送複製偏移量給從伺服器,等待到達這個偏移量。當複製偏移量到達之後,故障轉義就開始了,舊的主伺服器被通知切換配置,當客戶端在舊主伺服器上接觸阻塞時,就被重定向到新的主伺服器。

恢復master

啟動故障節點

在故障節點上執行

 cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e
其中3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 為master的節點id