Redis分片集群存儲(chǔ)的搭建到使用
前序
Redis集群搭建直接一步到位:支持海量數(shù)據(jù)以及高并發(fā)寫(xiě)
分片集群顧名思義,將數(shù)據(jù)分開(kāi)存儲(chǔ)到Redis集群中,這樣能夠存儲(chǔ)更多的數(shù)據(jù),避免浪費(fèi)資源,基礎(chǔ)搭建如:三主三從(一拖一)、三主六從(一拖二),本次搭建采用一拖一,一拖二情況可根據(jù)文末圖文介紹進(jìn)行添加從節(jié)點(diǎn)即可
cluster不能選擇db,只能默認(rèn)db為0,所以select切庫(kù)相當(dāng)于是不能使用的。
cluster不能選擇db,只能默認(rèn)db為0,所以select切庫(kù)相當(dāng)于是不能使用的。
cluster不能選擇db,只能默認(rèn)db為0,所以select切庫(kù)相當(dāng)于是不能使用的。
部署圖
分片集群特征:
- 集群中有多個(gè)master,每個(gè)master保存不同分片數(shù)據(jù) ,解決海量數(shù)據(jù)存儲(chǔ)問(wèn)題
- 每個(gè)master都可以有多個(gè)slave節(jié)點(diǎn),確保高可用
- master之間通過(guò)ping監(jiān)測(cè)彼此健康狀態(tài),類(lèi)似哨兵作用
- 客戶(hù)端請(qǐng)求可以訪問(wèn)集群任意節(jié)點(diǎn),最終都會(huì)被轉(zhuǎn)發(fā)到數(shù)據(jù)所在節(jié)點(diǎn)
三主三從(一拖一):
三主六從(一拖二):
開(kāi)始搭建
先弄好一個(gè)節(jié)點(diǎn),然后再?gòu)?fù)制出來(lái)6個(gè)節(jié)點(diǎn),這樣子可以稍微快一些
分片集群中的Redis節(jié)點(diǎn)必須開(kāi)啟集群模式,一般在配置文件中修改下面參數(shù)
這兩個(gè)密碼不要搞混了,作用不一樣
requirepass登錄Redis的密碼
masterauth鏈接集群的密碼
# 開(kāi)啟集群模式 cluster-enabled yes # 集群模式的配置文件名稱(chēng),無(wú)需手動(dòng)創(chuàng)建,由集群自動(dòng)維護(hù) cluster-config-file nodes_6666.conf # 集群中節(jié)點(diǎn)之間心跳時(shí)間 cluster-node-timeout 5000
剩下的文件路徑,比如 .log .pid .data 等自行修改即可
將上邊修改好的 Redis 文件夾復(fù)制出來(lái)6份,每份用端口號(hào)后綴命名(如果有3臺(tái)機(jī)器更好,N個(gè)master就弄N臺(tái)機(jī)器),自行修改 confg 配置文件里的 .log .pid .data cluster-config-file 最好這些配置都攜帶端口號(hào)后綴
挨個(gè)啟動(dòng)所有Redis節(jié)點(diǎn)服務(wù)
./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
確定一下是否成功啟動(dòng):ps -ef | grep redis
構(gòu)建集群
進(jìn)入一個(gè)Redis的bin目錄,執(zhí)行命令,需要自行替換你自己的密碼以及IP和端口
./redis-cli -a 你的鏈接集群的密碼 --cluster create IP:6910 IP:6920 IP:6930 IP:6940 IP:6950 IP:6960 --cluster-replicas 1
這兩個(gè)密碼不要搞混了,作用不一樣
requirepass登錄Redis的密碼
masterauth鏈接集群的密碼
這里你的Redis分片集群就搭建好了
進(jìn)入集群查看信息
進(jìn)入一個(gè)節(jié)點(diǎn)的Redis的bin目錄,執(zhí)行命令
./redis-cli -c -h 你的IP -p 6910
在提示框里輸入你鏈接集群的密碼
auth 你的鏈接集群的密碼
這樣你就進(jìn)來(lái)了,下邊是一些基本命令
查看集群基本信息
cluster info
查看集群節(jié)點(diǎn)信息
cluster nodes
增加一個(gè)節(jié)點(diǎn)
將搭建過(guò)程中的Redis文件夾再?gòu)?fù)制一份,并修改里邊的config配置,IP 、port、.log .data .pid 等
啟動(dòng)該節(jié)點(diǎn)
進(jìn)入bin目錄執(zhí)行命令使之加入集群
./redis-cli -c -h IP -p 端口 auth 你鏈接集群的密碼 添加節(jié)點(diǎn) cluster meet IP 新節(jié)點(diǎn)的端口 查看節(jié)點(diǎn)信息 cluster nodes
新加入的節(jié)點(diǎn)都是以master身份加入的,你可以將其修改為某個(gè)節(jié)點(diǎn)的從節(jié)點(diǎn)
redis-cli -c -h IP -p 新節(jié)點(diǎn)的端口 auth 你的鏈接集群的密碼 改變節(jié)點(diǎn)類(lèi)型 cluster replicate 你的一個(gè)主節(jié)點(diǎn)的ID 查看集群節(jié)點(diǎn) CLUSTER NODES
移除一個(gè)節(jié)點(diǎn)
redis-cli -c -h IP -p 端口 auth 你鏈接集群的密碼 #查看節(jié)點(diǎn) CLUSTER NODES 刪除節(jié)點(diǎn) CLUSTER FORGET 需要?jiǎng)h除的節(jié)點(diǎn)的ID 檢查節(jié)點(diǎn)信息 CLUSTER NODES
模擬一個(gè)master節(jié)點(diǎn)掛掉了
- 把你的一個(gè)master實(shí)例 kill-9 一下,然后 cluster nodes 查看一個(gè)集群節(jié)點(diǎn)狀態(tài),你會(huì)發(fā)現(xiàn)你kill掉的那個(gè)節(jié)點(diǎn)狀態(tài)已經(jīng)變成master,faildisconnected 同時(shí)這個(gè)master的從節(jié)點(diǎn)會(huì)升級(jí)為新的master
- 重新將kill掉的Redis實(shí)例啟動(dòng),然后 cluster nodes 查看集群節(jié)點(diǎn)狀態(tài),你會(huì)發(fā)現(xiàn)它成為了最新的那個(gè)master的slave(這一步就是故障恢復(fù))
命令匯總
集群 #打印集群的信息 cluster info #列出集群當(dāng)前已知的所有節(jié)點(diǎn)(node),以及這些節(jié)點(diǎn)的相關(guān)信息 cluster nodes 節(jié)點(diǎn) #將ip和port所指定的節(jié)點(diǎn)添加到集群當(dāng)中,讓它成為集群的一份子 cluster meet IP PORT #從集群中移除node id指定的節(jié)點(diǎn) cluster forget 節(jié)點(diǎn)ID #將當(dāng)前節(jié)點(diǎn)設(shè)置為node id指定的節(jié)點(diǎn)的從節(jié)點(diǎn) cluster replicate 節(jié)點(diǎn)ID #將節(jié)點(diǎn)的配置文件保存到硬盤(pán)里面 cluster saveconfig 槽(slot) #將一個(gè)或多個(gè)槽(slot)指派(assign)給當(dāng)前節(jié)點(diǎn) cluster addslots{<}slot{>}slot... #移除一個(gè)或多個(gè)槽對(duì)當(dāng)前節(jié)點(diǎn)的指派 cluster delslots{<}slot{>}[slot #移除指派給當(dāng)前節(jié)點(diǎn)的所有槽,讓當(dāng)前節(jié)點(diǎn)變成一個(gè)沒(méi)有指派任何槽的節(jié)點(diǎn) cluster flushslots #將槽s1ot指派給node id指定的節(jié)點(diǎn),如果槽已經(jīng)指派給另一個(gè)節(jié)點(diǎn) #那么先讓另一個(gè)節(jié)點(diǎn)刪除該槽,然后再進(jìn)行指派 cluster setslot{<}slot{>}node{<}node id{>} #將本節(jié)點(diǎn)的槽slot遷移到node id指定的節(jié)點(diǎn)中 cluster setslot{<}slot{>}migrating{<}node id{>} #從node_id指定的節(jié)點(diǎn)中導(dǎo)入槽slot到本節(jié)點(diǎn) cluster setslot{<}slot{>}importing{<}node id{>} #取消對(duì)槽slot的導(dǎo)入(import)或者遷移(migrate) cluster setslot{<}slot{>}stable 鍵 #計(jì)算鍵key應(yīng)該被放置在哪個(gè)槽上 cluster keyslot {<}key{>} # 返回槽slot目前包含的鍵值對(duì)數(shù)量 cluster countkeysinslot{<}slot{>} #返回count個(gè)slot槽中的鍵 cluster getkeysinslot{<}slot{>}{<}count{>}
到此這篇關(guān)于Redis分片集群存儲(chǔ)的搭建到使用的文章就介紹到這了,更多相關(guān)Redis分片集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于?Spring?Aop?環(huán)繞通知實(shí)現(xiàn)?Redis?緩存雙刪功能(示例代碼)
基于 spring aop 常規(guī)應(yīng)用場(chǎng)景多是用于日志記錄以及實(shí)現(xiàn) redis 分布式鎖,在 github 中也有項(xiàng)目是把它拿來(lái)當(dāng)作緩存的異常捕捉,這篇文章主要介紹了基于?Spring?Aop?環(huán)繞通知實(shí)現(xiàn)?Redis?緩存雙刪,需要的朋友可以參考下2022-08-08Redis實(shí)現(xiàn)優(yōu)惠券限一單限制詳解
這篇文章主要介紹了Redis解決優(yōu)惠券秒殺應(yīng)用案例,本文先講了搶購(gòu)問(wèn)題,指出其中會(huì)出現(xiàn)的多線程問(wèn)題,提出解決方案采用悲觀鎖和樂(lè)觀鎖兩種方式進(jìn)行實(shí)現(xiàn),然后發(fā)現(xiàn)在搶購(gòu)過(guò)程中容易出現(xiàn)一人多單現(xiàn)象,需要的朋友可以參考下2022-12-12基于Redis的List實(shí)現(xiàn)特價(jià)商品列表功能
本文通過(guò)場(chǎng)景分析給大家介紹了基于Redis的List實(shí)現(xiàn)特價(jià)商品列表,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08Redis的Hash類(lèi)型及相關(guān)命令小結(jié)
edis Hash是一種數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)字段和值的映射關(guān)系,本文就來(lái)介紹一下Redis的Hash類(lèi)型及相關(guān)命令小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-01如何保證Redis與數(shù)據(jù)庫(kù)的數(shù)據(jù)一致性
這篇文章主要介紹了如何保證Redis與數(shù)據(jù)庫(kù)的數(shù)據(jù)一致性,文中舉了兩個(gè)場(chǎng)景例子介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05Linux下安裝Redis并設(shè)置相關(guān)服務(wù)
這篇文章主要為大家介紹了Linux下安裝Redis并設(shè)置相關(guān)服務(wù),感興趣的小伙伴們可以參考一下2016-01-01CentOS系統(tǒng)安裝Redis及Redis的PHP擴(kuò)展詳解
這篇文章主要介紹了CentOS系統(tǒng)下安裝Redis數(shù)據(jù)的教程,以及詳解了Redis數(shù)據(jù)庫(kù)的PHP擴(kuò)展,文中介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-12-12