Redis分片集群的實現(xiàn)示例
前序:
Redis集群搭建直接一步到位:支持海量數(shù)據(jù)以及高并發(fā)寫
分片集群顧名思義,將數(shù)據(jù)分開存儲到Redis集群中,這樣能夠存儲更多的數(shù)據(jù),避免浪費資源,基礎搭建如:三主三從(一拖一)、三主六從(一拖二),本次搭建采用一拖一,一拖二情況可根據(jù)文末圖文介紹進行添加從節(jié)點即可
cluster不能選擇db,只能默認db為0,所以select切庫相當于是不能使用的。
cluster不能選擇db,只能默認db為0,所以select切庫相當于是不能使用的。
cluster不能選擇db,只能默認db為0,所以select切庫相當于是不能使用的。
部署圖:
分片集群特征:
1、集群中有多個master,每個master保存不同分片數(shù)據(jù) ,解決海量數(shù)據(jù)存儲問題
2、每個master都可以有多個slave節(jié)點 ,確保高可用
3、master之間通過ping監(jiān)測彼此健康狀態(tài) ,類似哨兵作用
4、客戶端請求可以訪問集群任意節(jié)點,最終都會被轉發(fā)到數(shù)據(jù)所在節(jié)點
三主三從(一拖一):

三主六從(一拖二):

開始搭建:
1、先弄好一個節(jié)點,然后再復制出來6個節(jié)點,這樣子可以稍微快一些
分片集群中的Redis節(jié)點必須開啟集群模式,一般在配置文件中修改下面參數(shù)
這兩個密碼不要搞混了,作用不一樣
requirepass 登錄Redis的密碼
masterauth 鏈接集群的密碼
# 開啟集群模式 cluster-enabled yes # 集群模式的配置文件名稱,無需手動創(chuàng)建,由集群自動維護 cluster-config-file nodes_6666.conf # 集群中節(jié)點之間心跳時間 cluster-node-timeout 5000
剩下的文件路徑,比如 .log .pid .data 等自行修改即可
2、將上邊修改好的 Redis 文件夾復制出來6份,每份用端口號后綴命名(如果有3臺機器更好,N個master就弄N臺機器),自行修改 confg 配置文件里的 .log .pid .data cluster-config-file 最好這些配置都攜帶端口號后綴
3、挨個啟動所有Redis節(jié)點服務
./redis-server ../conf/redis_6910.conf ./redis-server ../conf/redis_6920.conf ./redis-server ../conf/redis_6930.conf ./redis-server ../conf/redis_6940.conf ./redis-server ../conf/redis_6950.conf ./redis-server ../conf/redis_6960.conf
確定一下是否成功啟動:ps -ef | grep redis

4、構建集群
進入一個Redis的bin目錄,執(zhí)行命令,需要自行替換你自己的密碼以及IP和端口
./redis-cli -a 你的鏈接集群的密碼 --cluster create IP:6910 IP:6920 IP:6930 IP:6940 IP:6950 IP:6960 --cluster-replicas 1
這兩個密碼不要搞混了,作用不一樣
requirepass 登錄Redis的密碼
masterauth 鏈接集群的密碼
這里你的Redis分片集群就搭建好了
進入集群查看信息:
1、進入一個節(jié)點的Redis的bin目錄,執(zhí)行命令
./redis-cli -c -h 你的IP -p 6910
2、在提示框里輸入你鏈接集群的密碼
auth 你的鏈接集群的密碼
這樣你就進來了,下邊是一些基本命令
3、查看集群基本信息
cluster info
4、查看集群節(jié)點信息
cluster nodes
增加一個節(jié)點
1、將搭建過程中的Redis文件夾再復制一份,并修改里邊的config配置,IP 、port、.log .data .pid 等
2、啟動該節(jié)點
3、進入bin目錄執(zhí)行命令使之加入集群
./redis-cli -c -h IP -p 端口 auth 你鏈接集群的密碼 添加節(jié)點 cluster meet IP 新節(jié)點的端口 查看節(jié)點信息 cluster nodes
新加入的節(jié)點都是以master身份加入的,你可以將其修改為某個節(jié)點的從節(jié)點
redis-cli -c -h IP -p 新節(jié)點的端口 auth 你的鏈接集群的密碼 改變節(jié)點類型 cluster replicate 你的一個主節(jié)點的ID 查看集群節(jié)點 CLUSTER NODES
移除一個節(jié)點
redis-cli -c -h IP -p 端口 auth 你鏈接集群的密碼 #查看節(jié)點 CLUSTER NODES 刪除節(jié)點 CLUSTER FORGET 需要刪除的節(jié)點的ID 檢查節(jié)點信息 CLUSTER NODES
模擬一個master節(jié)點掛掉了
1、把你的一個master實例 kill-9 一下,然后 cluster nodes 查看一個集群節(jié)點狀態(tài),你會發(fā)現(xiàn)你kill掉的那個節(jié)點狀態(tài)已經(jīng)變成 master,fail disconnected 同時這個master的從節(jié)點會升級為新的master
2、重新將kill掉的Redis實例啟動,然后 cluster nodes 查看集群節(jié)點狀態(tài),你會發(fā)現(xiàn)它成為了最新的那個master的slave(這一步就是故障恢復)
命令匯總
集群
#打印集群的信息
cluster info
#列出集群當前已知的所有節(jié)點(node),以及這些節(jié)點的相關信息
cluster nodes
節(jié)點
#將ip和port所指定的節(jié)點添加到集群當中,讓它成為集群的一份子
cluster meet IP PORT
#從集群中移除node id指定的節(jié)點
cluster forget 節(jié)點ID
#將當前節(jié)點設置為node id指定的節(jié)點的從節(jié)點
cluster replicate 節(jié)點ID
#將節(jié)點的配置文件保存到硬盤里面
cluster saveconfig
槽(slot)
#將一個或多個槽(slot)指派(assign)給當前節(jié)點
cluster addslots{<}slot{>}slot...
#移除一個或多個槽對當前節(jié)點的指派
cluster delslots{<}slot{>}[slot
#移除指派給當前節(jié)點的所有槽,讓當前節(jié)點變成一個沒有指派任何槽的節(jié)點
cluster flushslots
#將槽s1ot指派給node id指定的節(jié)點,如果槽已經(jīng)指派給另一個節(jié)點
#那么先讓另一個節(jié)點刪除該槽,然后再進行指派
cluster setslot{<}slot{>}node{<}node id{>}
#將本節(jié)點的槽slot遷移到node id指定的節(jié)點中
cluster setslot{<}slot{>}migrating{<}node id{>}
#從node_id指定的節(jié)點中導入槽slot到本節(jié)點
cluster setslot{<}slot{>}importing{<}node id{>}
#取消對槽slot的導入(import)或者遷移(migrate)
cluster setslot{<}slot{>}stable
鍵
#計算鍵key應該被放置在哪個槽上
cluster keyslot {<}key{>}
# 返回槽slot目前包含的鍵值對數(shù)量
cluster countkeysinslot{<}slot{>}
#返回count個slot槽中的鍵
cluster getkeysinslot{<}slot{>}{<}count{>}到此這篇關于Redis分片集群的實現(xiàn)示例的文章就介紹到這了,更多相關Redis分片集群內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

