溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

發(fā)布時(shí)間:2021-12-10 17:42:00 來(lái)源:億速云 閱讀:133 作者:柒染 欄目:云計(jì)算

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

redis集群三種方式

1、Redis官方提供的集群解決方案-Redis-cluster (剛發(fā)布差不多一年)

2、 Twemproxy ( twitter貢獻(xiàn)的) 使用時(shí)間比較長(zhǎng),比較成熟,但是有些功能不支持

3、豌豆尖針對(duì)Twemproxy 進(jìn)行改良優(yōu)化后的解決方案codis

更多分布式緩存方案級(jí)別選型請(qǐng)參考博文:http://my.oschina.net/tantexian/blog/685620

redis應(yīng)用場(chǎng)景:任何需要用到緩存的地方,解決本地緩存數(shù)據(jù)量太小問(wèn)題。分布式緩存能有效防止本地緩存失效數(shù)據(jù)庫(kù)雪崩現(xiàn)象。 解決分布式應(yīng)用中緩存不能共用(分布式session保存)。云計(jì)算中為客戶(hù)提供緩存分布式緩存redis服務(wù)(青云、UnitedStack等廠商已經(jīng)具有了)

接下來(lái)主要講解如何搭建Redis-cluster集群環(huán)境及wishstack如何使用Jedis調(diào)用Redis集群:

mkdir cluster-test

cd cluster-test

mkdir 7000 7001 7002 7003 7004 7005

yum install gcc wget -y

wget http://download.redis.io/releases/redis-3.0.5.tar.gz

tar xzvf redis-3.0.5.tar.gz

cd redis-3.0.5

make(直接make報(bào)錯(cuò)則使用make MALLOC=libc)

yum install tcl -y

make test

make install

安裝完畢redis-*常規(guī)操作命令腳本即被copy到linux bin下面,可以直接使用(當(dāng)然也可以使用編譯完的源碼包./redis-3.0.5/src/下面的腳本)

將redis源碼包的配置文件復(fù)制到7000/

cp redis-3.0.5/redis.conf 7000/

vi 7000/redis.conf

修改配置文件中的下面選項(xiàng)

port 7000

daemonize yes

cluster-enabled yes

cluster-config-file nodes-7000.conf

cluster-node-timeout 5000

appendonly yes

將修改好的7000/redis.conf文件復(fù)制到其他文件夾(修改redis.conf 端口port為對(duì)于的port)

cp 7000/redis.conf 7001/

cp 7000/redis.conf 7002/

cp 7000/redis.conf 7003/

cp 7000/redis.conf 7004/

cp 7000/redis.conf 7005/

注:7001文件夾下面的redis.conf將端口修改為7001,其他依次類(lèi)推。

分別啟動(dòng)6個(gè)redis實(shí)例:

redis-server ./7000/redis.conf

redis-server ./7001/redis.conf

redis-server ./7002/redis.conf

redis-server ./7003/redis.conf

redis-server ./7004/redis.conf

redis-server ./7005/redis.conf

redis-server ./7000/redis.conf && redis-server ./7001/redis.conf && redis-server ./7002/redis.conf && redis-server ./7003/redis.conf && redis-server ./7004/redis.conf&& redis-server ./7005/redis.conf

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

使用ruby腳本redis-trib.rb執(zhí)行redis的創(chuàng)建集群命令創(chuàng)建集群

#redis3.0.5源碼包中的redis-trib.rb的create子命令構(gòu)建集群

其中參數(shù)--replicas

則指定了Redis Cluster中的每個(gè)Master節(jié)點(diǎn)配備幾個(gè)Slave節(jié)點(diǎn)

其中節(jié)點(diǎn)角色由順序決定,先master之后是slave

使用redis-trib.rb腳本必須有ruby環(huán)境,及redis的ruby接口。

yum -y install ruby ruby-devel rubygems rpm-build

gem install redis(網(wǎng)速不行則使用淘寶的gem源:gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/)

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

創(chuàng)建redis集群:

./redis-3.0.5/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
./redis-3.0.5/src/redis-trib.rb create --replicas 1 172.31.2.32:7000 172.31.2.32:7001 172.31.2.32:7002 172.31.2.32:7003 172.31.2.32:7004 172.31.2.32:7005

./redis-3.0.5/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

這個(gè)命令在這里用于創(chuàng)建一個(gè)新的集群, 選項(xiàng)--replicas 1 表示我們希望為集群中的每個(gè)主節(jié)點(diǎn)創(chuàng)建一個(gè)從節(jié)點(diǎn)。

之后跟著的其他參數(shù)則是這個(gè)集群實(shí)例的地址列表,3個(gè)master3個(gè)slave

redis-trib 會(huì)打印出一份預(yù)想中的配置給你看, 如果你覺(jué)得沒(méi)問(wèn)題的話(huà), 就可以輸入 yes , redis-trib 就會(huì)將這份配置應(yīng)用到集群當(dāng)中,讓各個(gè)節(jié)點(diǎn)開(kāi)始互相通訊,最后可以得到如下信息:

[OK] All 16384 slots covered

這表示集群中的 16384 個(gè)槽都有至少一個(gè)主節(jié)點(diǎn)在處理, 集群運(yùn)作正常。


如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

測(cè)試redis-cluster:

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

slaveof配置項(xiàng)。

./redis-trib.rb create --replicas添加主從節(jié)點(diǎn)???

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

注:若報(bào)上述錯(cuò)誤,則使用redis-cli -c -p 7000端口連接,使用dbsize命令,如果不為零,則使用flushall命令清零。如果報(bào)是slave不能清零,

則找到該slave對(duì)應(yīng)的master,執(zhí)行上述操作。知道dbsize為0.

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

redis-cli -c -p 7000 shutdown && redis-cli -c -p 7001 shutdown && redis-cli -c -p 7002 shutdown && redis-cli -c -p 7003 shutdown && redis-cli -c -p 7004 shutdown &&redis-cli -c -p 7005 shutdown

redis-server ./7000/redis.conf && redis-server ./7001/redis.conf && redis-server ./7002/redis.conf && redis-server ./7003/redis.conf && redis-server ./7004/redis.conf&& redis-server ./7005/redis.conf

./redis-3.0.5/src/redis-trib.rb create --replicas 1 172.31.2.32:7000 172.31.2.32:7001 172.31.2.32:7002 172.31.2.32:7003 172.31.2.32:7004 172.31.2.32:7005

注:del-node之前需要將該節(jié)點(diǎn)./redis-trib.rb reshard 127.0.0.1:7003到其他節(jié)點(diǎn),只有空的實(shí)例才能被刪除。

如果使用keys * 查詢(xún)到結(jié)果為空,說(shuō)明當(dāng)前實(shí)例保存數(shù)據(jù)為空,能夠使用del-node命令移除。

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

將127.0.0.1::7000關(guān)掉:redis-cli -c -p 7000 shutdown

更多關(guān)于redis-cli操作請(qǐng)參考:http://blog.csdn.net/tantexian/article/details/49924873

接下來(lái)再172.31.2.33上面重新啟動(dòng)redis-server來(lái)講該節(jié)點(diǎn)添加到上述創(chuàng)建好的172.31.2.32的redis集群中。

第一步還是跟上述步驟一樣,安裝redis基礎(chǔ)環(huán)境。

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

將172.31.2.33上面新跑的實(shí)例*:8000 及*:8001加入到集群中來(lái)。

cluster集群相關(guān)命令,更多redis相關(guān)命令見(jiàn)文檔:http://redis.readthedocs.org/en/latest/

  1. 集群

  2. CLUSTER INFO 打印集群的信息

  3. CLUSTER NODES 列出集群當(dāng)前已知的所有節(jié)點(diǎn)(node),以及這些節(jié)點(diǎn)的相關(guān)信息。

  4. 節(jié)點(diǎn)

  5. CLUSTER MEET <ip> <port> 將 ip 和 port 所指定的節(jié)點(diǎn)添加到集群當(dāng)中,讓它成為集群的一份子。

  6. CLUSTER FORGET <node_id> 從集群中移除 node_id 指定的節(jié)點(diǎn)。

  7. CLUSTER REPLICATE <node_id> 將當(dāng)前節(jié)點(diǎn)設(shè)置為 node_id 指定的節(jié)點(diǎn)的從節(jié)點(diǎn)。

  8. CLUSTER SAVECONFIG 將節(jié)點(diǎn)的配置文件保存到硬盤(pán)里面。

  9. 槽(slot)

  10. CLUSTER ADDSLOTS <slot> [slot ...] 將一個(gè)或多個(gè)槽(slot)指派(assign)給當(dāng)前節(jié)點(diǎn)。

  11. CLUSTER DELSLOTS <slot> [slot ...] 移除一個(gè)或多個(gè)槽對(duì)當(dāng)前節(jié)點(diǎn)的指派。

  12. CLUSTER FLUSHSLOTS 移除指派給當(dāng)前節(jié)點(diǎn)的所有槽,讓當(dāng)前節(jié)點(diǎn)變成一個(gè)沒(méi)有指派任何槽的節(jié)點(diǎn)。

  13. CLUSTER SETSLOT <slot> NODE <node_id> 將槽 slot 指派給 node_id 指定的節(jié)點(diǎn),如果槽已經(jīng)指派給另一個(gè)節(jié)點(diǎn),那么先讓另一個(gè)節(jié)點(diǎn)刪除該槽>,然后再進(jìn)行指派。

  14. CLUSTER SETSLOT <slot> MIGRATING <node_id> 將本節(jié)點(diǎn)的槽 slot 遷移到 node_id 指定的節(jié)點(diǎn)中。

  15. CLUSTER SETSLOT <slot> IMPORTING <node_id> 從 node_id 指定的節(jié)點(diǎn)中導(dǎo)入槽 slot 到本節(jié)點(diǎn)。

  16. CLUSTER SETSLOT <slot> STABLE 取消對(duì)槽 slot 的導(dǎo)入(import)或者遷移(migrate)。

  17. CLUSTER KEYSLOT <key> 計(jì)算鍵 key 應(yīng)該被放置在哪個(gè)槽上。

  18. CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的鍵值對(duì)數(shù)量。

  19. CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 個(gè) slot 槽中的鍵。

真是場(chǎng)景的redis集群環(huán)境部署:

建議至少三臺(tái)機(jī)器:(其實(shí)redis.server服務(wù)時(shí)PING-PONG無(wú)中心架構(gòu),且,可以在同一臺(tái)機(jī)器上面啟動(dòng)多個(gè)master及slave)

node1:172.31.2.31

node2:172.31.2.32

node3:172.31.2.33

三組一主兩從設(shè)計(jì):

172.31.2.31:7000(主) 172.31.2.32:7000(從) 172.31.2.33:7000(從) 

172.31.2.32:7001(主) 172.31.2.31:7001(從) 172.31.2.33:7001(從) 

172.31.2.33:7002(主) 172.31.2.31:7002(從) 172.31.2.32:7002(從) 

這樣就達(dá)到了比較高的穩(wěn)定性。

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

jedis使用:

https://github.com/xetorthio/jedis

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

如何實(shí)現(xiàn)分布式緩存redis-cluster環(huán)境搭建及wishstack調(diào)用Jedis

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI