午夜无码人妻aⅴ大片色欲张津瑜,国产69久久久欧美黑人A片,色妺妺视频网,久久久久国产综合AV天堂

在Redis中如何對集群進(jìn)行擴(kuò)容

小編給大家分享一下在redis中如何對集群進(jìn)行擴(kuò)容,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比五原網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式五原網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋五原地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

在使用Redis搭建集群環(huán)境時(shí),通常會根據(jù)業(yè)務(wù)的需求,要對集群進(jìn)行擴(kuò)容,以滿足業(yè)務(wù)的需要。并且這也是分布式存儲比較常見的需求,在Redis中對集群進(jìn)行擴(kuò)容主要分為3步:

1.準(zhǔn)備新節(jié)點(diǎn)

2.加入集群

3.遷移槽和數(shù)據(jù)

下面我們詳細(xì)介紹一下這3個(gè)步驟:

  • 準(zhǔn)備新節(jié)點(diǎn)

我們還是向準(zhǔn)備其它節(jié)點(diǎn)一樣,先修改節(jié)點(diǎn)配置。

# 節(jié)點(diǎn)端口
port 6385
# 開啟集群模式
cluster-enabled yes
# 節(jié)點(diǎn)超時(shí)時(shí)間,單位為毫秒
cluster-node-timeout 15000
# 集群內(nèi)部配置文件
cluster-config-file "nodes-6385.conf"


啟動(dòng)該節(jié)點(diǎn):

./src/redis-server redis-6385.conf
./src/redis-server redis-6386.conf


但此時(shí)新增的節(jié)點(diǎn)還沒有和其它節(jié)點(diǎn)進(jìn)行通信,所以該節(jié)點(diǎn)現(xiàn)在還沒有添加到集群環(huán)境中。


  • 加入集群

將新節(jié)點(diǎn)加入集群我們可以通過cluster meet命令。

cluster meet 127.0.0.1 6385
cluster meet 127.0.0.1 6386
在Redis中如何對集群進(jìn)行擴(kuò)容

我們看上圖所示,新節(jié)點(diǎn)雖然添加到了集群環(huán)境中,但新節(jié)點(diǎn)的類型是master的,也就是都是主節(jié)點(diǎn)。同樣我們也可以使用redis-trib.rb工具添加新節(jié)點(diǎn),并且該命令可以直接支持添加從節(jié)點(diǎn)。

redis-trib.rb add-node 127.0.0.1:6385 127.0.0.1:6379
redis-trib.rb add-node 127.0.0.1:6386 127.0.0.1:6379
在Redis中如何對集群進(jìn)行擴(kuò)容

在生產(chǎn)環(huán)境中我們推薦使用redis-trib.rb命令添加新節(jié)點(diǎn),因?yàn)樵撁钤谔砑有鹿?jié)點(diǎn)時(shí)會執(zhí)行檢查,如果新節(jié)點(diǎn)已經(jīng)加入集群或者包含數(shù)據(jù),則該命令會放棄集群加入。


  • 遷移槽和數(shù)據(jù)

加入集群后需要為新節(jié)點(diǎn)遷移槽和相關(guān)的數(shù)據(jù),槽在遷移的過程中集群可以正常的提供讀寫服務(wù)。下面我們詳細(xì)介紹一下這方面的內(nèi)容。

1.槽遷移計(jì)劃

槽是Redis集群管理數(shù)據(jù)的基本單位,首先需要為新節(jié)點(diǎn)指定槽的遷移計(jì)劃,也就是將哪些節(jié)點(diǎn)的哪些槽遷移到新節(jié)點(diǎn)中。并且遷移計(jì)劃要確保每個(gè)節(jié)點(diǎn)負(fù)責(zé)相似數(shù)量的槽,從而保證各節(jié)點(diǎn)的數(shù)據(jù)均勻。槽遷移計(jì)劃確定后開始逐個(gè)把槽內(nèi)數(shù)據(jù)從源節(jié)點(diǎn)遷移到目標(biāo)節(jié)點(diǎn)中。


2.遷移數(shù)據(jù)

數(shù)據(jù)遷移過程是逐個(gè)槽進(jìn)行的,每個(gè)槽遷移的流程如下.

流程說明:

1)對目標(biāo)節(jié)點(diǎn)發(fā)送cluster setslot {slot} importing {sourceNodeId}命令,讓目標(biāo)節(jié)點(diǎn)準(zhǔn)備導(dǎo)入槽數(shù)據(jù)。
2)對源節(jié)點(diǎn)發(fā)送cluster setslot {slot} migrating {targetNodeId}命令,讓源節(jié)點(diǎn)準(zhǔn)備遷出槽數(shù)據(jù)。
3)源節(jié)點(diǎn)循環(huán)執(zhí)行cluster getkeysinslot {slot} {count}命令,獲取count個(gè)數(shù)據(jù)槽{slot}的鍵。
4)在源節(jié)點(diǎn)上執(zhí)行migrate {targetIp} {targetPort} "" 0 {timeout} {keys} {keys …}命令。把獲取的鍵通過流水線(pipeline)機(jī)制批量遷移到目標(biāo)節(jié)點(diǎn)。
5)重復(fù)步驟3、4部直到槽下所有的鍵值數(shù)據(jù)遷移到目標(biāo)節(jié)點(diǎn)。
6)向集群內(nèi)所有主節(jié)點(diǎn)發(fā)送cluster setslot {slot} node {targetNodeId}命令,通知槽分配給目標(biāo)節(jié)點(diǎn)。

在Redis中如何對集群進(jìn)行擴(kuò)容

下面我們手動(dòng)使用上述命令把節(jié)點(diǎn)6379負(fù)責(zé)的槽4096遷移到目標(biāo)節(jié)點(diǎn)6385中,具體操作如下:

1.目標(biāo)節(jié)點(diǎn)準(zhǔn)備導(dǎo)入槽4096數(shù)據(jù)。

cluster setslot 4096 importing 目標(biāo)節(jié)點(diǎn)ID
在Redis中如何對集群進(jìn)行擴(kuò)容

2.源節(jié)點(diǎn)注備導(dǎo)出槽4096數(shù)據(jù)。

cluster setslot 4096 migrating 源節(jié)點(diǎn)ID
在Redis中如何對集群進(jìn)行擴(kuò)容

3.批量獲取槽4096對應(yīng)的鍵。

cluster getkeysinslot 4096 100
在Redis中如何對集群進(jìn)行擴(kuò)容

我們先查詢一下在6379節(jié)點(diǎn)是否包括上述的key。

在Redis中如何對集群進(jìn)行擴(kuò)容

下面我們遷移這3個(gè)鍵。

在Redis中如何對集群進(jìn)行擴(kuò)容

下面我們繼續(xù)在6379節(jié)點(diǎn)中查詢上述的3個(gè)鍵。

在Redis中如何對集群進(jìn)行擴(kuò)容

下面我們通知所有主節(jié)點(diǎn)槽4096指派給目標(biāo)節(jié)點(diǎn)6385。

在Redis中如何對集群進(jìn)行擴(kuò)容

我們可以在6379節(jié)點(diǎn)中查看一下確定4096槽不在由6379負(fù)責(zé)。

在Redis中如何對集群進(jìn)行擴(kuò)容

上述內(nèi)容就是手動(dòng)執(zhí)行槽遷移的過程。在實(shí)際的操作中因?yàn)闀婕暗酱罅坎奂版I的遷移,所以會很不方便,因此redis-trib工具提供了槽分片功能,命令如下:

redis-trib.rb reshard host:port --form <arg> --to <arg> --slots <arg> --yes --timeout <arg> ---pepeline <arg>


下面我們介紹一下上述命令參數(shù)說明:

  • host:port:比傳參數(shù),集群內(nèi)任意節(jié)點(diǎn)地址,用來獲取整個(gè)集群信息。

  • --form:制定源節(jié)點(diǎn)的id,如果有多個(gè)源節(jié)點(diǎn),則使用逗號分割。

  • --to:需要遷移的目標(biāo)節(jié)點(diǎn)id,并且目標(biāo)節(jié)點(diǎn)只能指定一個(gè)。

  • --slots:需要遷移槽的總數(shù)量。

  • --yes:當(dāng)打印出reshard執(zhí)行計(jì)劃時(shí),是否需要用戶輸入yes確認(rèn)后再執(zhí)行reshard。

  • --timeout:控制每次migrate操作的超時(shí)時(shí)間,默認(rèn)為60000毫秒。

  • --pipeline:控制每次批量遷移鍵的數(shù)量,默認(rèn)為10。


下面我們使用reshard命令遷移剩余槽的數(shù)據(jù)。

在Redis中如何對集群進(jìn)行擴(kuò)容

上述命令執(zhí)行完后reshard命令會提示我們輸入遷移槽的數(shù)量,我們暫時(shí)輸入4096。

在Redis中如何對集群進(jìn)行擴(kuò)容

當(dāng)我們輸入完遷移槽的數(shù)量后,會提示我們輸入目標(biāo)節(jié)點(diǎn)ID,我們輸入6385節(jié)點(diǎn)ID。

在Redis中如何對集群進(jìn)行擴(kuò)容

同樣,我們輸入完目標(biāo)節(jié)點(diǎn)后,會提示我們輸入輸入源節(jié)點(diǎn)ID,也就是主節(jié)點(diǎn)ID,所以我們輸入6379、6380、6381三個(gè)主節(jié)點(diǎn)ID,并且已done命令結(jié)束。

在Redis中如何對集群進(jìn)行擴(kuò)容

當(dāng)輸入完上述命令后,會打印出所有槽從源節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的計(jì)劃,并讓我們輸入yes命令后才會繼續(xù)執(zhí)行遷移工作。

在Redis中如何對集群進(jìn)行擴(kuò)容

輸入yes命令后在通過cluster nodes命令查看節(jié)點(diǎn)狀態(tài)。

在Redis中如何對集群進(jìn)行擴(kuò)容

下面我們還有最后一個(gè)步驟,就是當(dāng)初我們雖然把6385和6386節(jié)點(diǎn)添加到了集群,并且已經(jīng)將部分槽和數(shù)據(jù)遷移到了6385節(jié)點(diǎn)上,但該節(jié)點(diǎn)并沒有相應(yīng)的從節(jié)點(diǎn),所以下面的步驟就是將6386節(jié)點(diǎn)設(shè)置為6385節(jié)點(diǎn)的從節(jié)點(diǎn)。

在Redis中如何對集群進(jìn)行擴(kuò)容

以上是“在Redis中如何對集群進(jìn)行擴(kuò)容”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

標(biāo)題名稱:在Redis中如何對集群進(jìn)行擴(kuò)容
本文路徑:http://www.ekvhdxd.cn/article0/jsjdio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、企業(yè)建站微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)