Redis 5.0開始將原本redis-trib整合到redis-cli中,可以直接操作使用.
叢集一
叢集二
叢集三
建立Redis Server叢集,至少要有3個Master節點,其餘會依照給予的參數來配置Replica節點.
# 配置3個master節點
redis-cli --cluster create 127.0.0.1:6310 127.0.0.1:6320 127.0.0.1:6330
# 配置3個master節點,其餘6個配置為replica節點
# --cluster-replicas 2 代表每個master節點需要配置2個replica節點
redis-cli --cluster create 127.0.0.1:6310 127.0.0.1:6320 127.0.0.1:6330 127.0.0.1:6311 127.0.0.1:6312 127.0.0.1:6321 127.0.0.1:6322 127.0.0.1:6331 127.0.0.1:6332 --cluster-replicas 2
檢查Redis Server叢集配置是否OK.Slots是否有重覆分配給多個master節點.
redis-cli --cluster check 127.0.0.1:6310
# --cluster-search-multiple-owners 確認是否有同Slot被分配給多個master節點
redis-cli --cluster check 127.0.0.1:6310 --cluster-search-multiple-owners
查看Redis Server叢集狀態Keys/Slots/Replica.
redis-cli --cluster info 127.0.0.1:6310
修復Redis Server叢集.修復Slots重覆分配給多個master節點問題.
redis-cli --cluster fix 127.0.0.1:6310
# --cluster-search-multiple-owners 修復Slots重覆分配給多個master節點問題
# --cluster-fix-with-unreachable-masters 修復尚未被分配的
redis-cli --cluster fix 127.0.0.1:6310 --cluster-search-multiple-owners
Redis Server叢集指定節點重新分配Slots,通常應用在擴充叢集後的重新分配的情境.
redis-cli --cluster reshard 127.0.0.1:6310
# --cluster-from 指定Redis Server叢集節點node id當作來源重新分配Slots,可以用逗號指定多個節點,預設是所有
# --cluster-to 指定Redis Server叢集節點node id來接收重新分配的Slots,只能指定一個,當沒有輸入時會提示輸入
# --cluster-slots 需要重新分配的Slots數量,當沒有輸入時會提示輸入
# --cluster-yes 直接確認是否要重新分配Slot
# --cluster-timeout 設定cluster migrate執行的逾時時間
# --cluster-pipeline 設定cluster getkeysinslot時一次取出的key數量,預設為10
# --cluster-replace 是否直接replace到目的節點
redis-cli --cluster reshard 127.0.0.1:6310 --cluster-from 1b9af54b8e0f609e0a066530b3f12a7852589fc3 --cluster-to 1307d911eb56f3079e2490dcab53b3131a0f8f81 --cluster-slots 10 --cluster-yes --cluster-timeout 5000 --cluster-pipeline 10 --cluster-replace
將指定的Redis Server叢集重新平均分配Slots.
# --cluster-weight 設定集群各node的權重,待後續分配slot時參照
# --cluster-use-empty-masters 設定是否讓目前尚未分配到的節點參與,預設是不可以
# --cluster-timeout 設定cluster migrate執行的逾時時間
# --cluster-simulate 是否透過模擬進行rebalance
# --cluster-pipeline 設定cluster getkeysinslot時一次取出的key數量,預設為10
# --cluster-threshold 設定閥值來觸發執行rebalance
# --cluster-replace 是否直接replace到目的節點
redis-cli --cluster rebalance --cluster-weight 1b9af54b8e0f609e0a066530b3f12a7852589fc3=1 7a0716a69a2e1af35eb353fadae030f6fc116864=2 1307d911eb56f3079e2490dcab53b3131a0f8f81=3 --cluster-simulate 127.0.0.1:6310
在Redis Server叢集加入新節點,預設此新增節點角色為Master節點.
# --cluster-slave 將新節點加入Master節點成為Replica
# --cluster-master-id Master節點node id
# add-node 新加入節點 任意已存在節點
redis-cli --cluster add-node 127.0.0.1:6379 127.0.0.1:6310 --cluster-slave --cluster-master-id 1b9af54b8e0f609e0a066530b3f12a7852589fc3
刪除Redis Server叢集內指定的節點.
如果刪除Master節點中還有配置Slots,需要先將Slots改分派到其他Master節點後才可以刪除.
# 指定刪除的node id
redis-cli --cluster del-node 127.0.0.1:6312 82013de2c546919a43c9b6597a2b6035bb1ac930
在Redis Server叢集中執行指定的命令.
# 預設同時對所有節點執行命令
# --cluster-only-masters 僅針對Master節點執行命令
# --cluster-only-replicas 僅針對Replica節點執行命令
redis-cli --cluster call 127.0.0.1:6310 config get cluster-node-timeout
設定cluster-node-timeout.(毫秒)
redis-cli --cluster set-timeout 10000
將外部Redis Server的資料匯入到Redis Server叢集中.
# --cluster-from 指定來源Redis Server
# --cluster-copy 使用copy的方式
# --cluster-replace 使用replace的方式
redis-cli --cluster import 127.0.0.1:6310 --cluster-from 127.0.0.1:6379 --cluster-replace
備份Redis Server叢集到路徑.
redis-cli --cluster backup 127.0.0.1:6310 /home/redis/data/