天天看點

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

Windows 配置Reids叢集 Redis Cluster

前言:本人菜鳥一枚,之前項目要求搭建redis叢集,就研究了一下,總結如下,後續Linux版本的搭建會繼續傳上來,敬請關注,謝謝~~

1. 下載下傳安裝Redis

Redis官方不支援Windows,但是Microsoft Open Tech group在 GitHub上開發了一個Win64的版本,下載下傳位址為: 

https://github.com/MSOpenTech/redis/releases

解壓之後,拷貝到自定義的Redis目錄下,例如D:\Redis\Redis-x64-3.0.504

打開cmd,切換到Redis目錄下,執行

redis-server redis.windows.conf

出現下圖即為OK

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

視窗不要關閉,再重新打開一個cmd視窗,連接配接Redis執行

redis-cli.exe -h 192.168.1.100 -p 6379

2. 安裝Ruby并配置環境

安裝Ruby,Windows可以安裝RubyInstaller,下載下傳位址: 

http://railsinstaller.org/en

勾選下面選項不用配置環境變量

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

一直下一步安裝完成會自動彈出一個cmd的黑色視窗,需要對Ruby進行配置

執行 gem install redis

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

如果出現 SSL Connect error時,是因為ruby 沒有包含 SSL 證書,是以 https 的連結被伺服器拒絕。

解決方法很簡單,首先在這裡下載下傳證書 http://curl.haxx.se/ca/cacert.pem, 然後再環境變量裡設定 SSL_CERT_FILE 這個環境變量,并指向 cacert.pem 檔案。

3. 搭建Redis叢集

要讓叢集正常運作至少需要三個主節點,不過在剛開始試用叢集功能時,強烈建議使用六個節點:其中三個為主節點,而其餘三個則是各個主節點的從節點。

主節點崩潰,從節點的Redis就會提升為主節點,代替原來的主節點工作,崩潰的主Redis回複工作後,會成為從節點

1). 建立Redis叢集目錄

在redis安裝的根目錄下通過指令行建立6個以端口命名的檔案夾

mkdir 7000 7001 7002 7003 7004 7005

将安裝的redis檔案夾中的redis.windows.conf以及redis-server,分别拷貝到建立的六個檔案夾中

2). 更改配置

将六個檔案夾下的redis.windows.conf檔案中以下屬性進行修改:

port 7001(對應檔案夾的端口号)

cluster-enabled yes(開啟執行個體的叢集模式)

cluster-config-file nodes.conf(儲存節點配置檔案,預設值為nodes.conf )

cluster-node-timeout 5000(是叢集中各節點互相通訊時,允許"失聯"的最大毫秒數,上面的配置為5秒,如果超過5秒某個節點沒向其它節點彙報成功,認為該節點挂了。)

appendonly yes(啟用AOF持久化方式)

3). 啟動6個redis服務

進入每個端口命名的檔案夾下逐個啟動服務

redis-server.exe redis.conf

4). 建立啟動叢集

由于建立啟動叢集需要redis-trib.rb檔案,它是一個 Ruby 程式, 這個程式通過向執行個體發送特殊指令來完成建立新叢集,檢查叢集或者對叢集進行重新分片(reshared)等工作。

Windows的redis安裝檔案中是沒有這個檔案的,我們需要去官網下載下傳Redis,官網的Redis是Linux版本,在其源碼src檔案夾下,将redis-trib.rb拷貝到本機中Redis的安裝目錄中

最後進入redis-trib.rb檔案所在目錄執行:

ruby redis-trib.rb create --replicas 1 192.168.1.100:7000192.168.1.100:7001192.168.1.100:7002192.168.1.100:7003192.168.1.100:7004192.168.1.100:7005

說明:

redis-trib.rb create, 這表示我們希望建立一個新的叢集。

--replicas 1 表示我們希望為叢集中的每個主節點建立一個從節點。

之後的參數則是執行個體的位址清單,程式使用這些位址所訓示的執行個體來建立新叢集。

這個指令在這裡用于建立一個新的叢集, 選項–replicas 1 表示我們希望為叢集中的每個主節點建立一個從節點。之後跟着的其他參數則是這個叢集執行個體的位址清單,3個master3個slave

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

redis-trib 會列印出一份預想中的配置給你看, 如果你覺得沒問題的話, 就可以輸入 yes ,redis-trib 就會将這份配置應用到叢集當中,讓各個節點開始互相通訊。

5). 連接配接叢集進行測試

連接配接叢集的指令:

redis-cli.exe -c -p 7000

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

Redis叢集資料配置設定政策:

采用一種叫做哈希槽 (hash slot)的方式來配置設定資料,redis cluster 預設配置設定了 16384 個slot,當我們set一個key 時,會用CRC16算法來取模得到所屬的slot,然後将這個key分到哈希槽區間的節點上,具體算法就是:CRC16(key) % 16384

注意的是:必須要3個以後的主節點,否則在建立叢集時會失敗,三個節點分别承擔的slot 區間是:

節點A覆寫0-5460;

    節點B覆寫5461-10922;

    節點C覆寫10923-16383.

是以上圖中按照redis cluster的哈希槽算法:CRC16(‘name’)%16384 

被配置設定到了7001端口的redis服務上。

至此,Redis Cluster在Windows上的配置就完成了!

Redis動态增加節點的相關測試

1:首先把需要添加的節點啟動

建立檔案夾 mkdir 7007

将redis.conf和redis-server.exe兩個檔案拷過來

并将redis.conf中的port等數值改為7007(參考搭建叢集)

然後啟動該節點(輕按兩下7007.bat) redis-server.exe redis.conf

2:執行以下指令,将這個新節點添加到叢集中

Ruby redis-trib.rb add-node 192.168.1.100:7007 192.168.1.100:7000(前為新節點,後為已存在的任一節點)

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

這就表明添加節點7007成功,此時可以打開nodes-7007.conf檔案檢視叢集節點資訊

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

端口為7007的redis已經成功的加入到叢集中,但是這個主節點沒有空間槽。

3:增加了新的節點之後,這個新的節點可以成為主節點或者是從節點.

3.1把這個節點變成主節點

1)使用redis-trib程式,将叢集中的某些哈希槽移動到新節點裡面,這個新節點就成為真正的主節點了。

執行指令ruby redis-trib.rb reshard 192.168.1.100:7007

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

執行指令如上圖所示:問你是否從原有的1-16384個槽中配置設定多少到新的主節點我們這裡配置設定1000為例,回車

2)然後緊接着會詢問你給id為誰的主節點配置設定,我們這裡copy這個id就行

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

3)詢問你是從所有的空間去給這個節點配置設定空間還是從某一個節點配置設定

輸入all  回車繼續

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

4)然後會給你配置設定出一個配置設定計劃,輸入yes開始配置設定。完成ok

檢視nodes-7007.conf檔案

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

這就表示新添加的主節點配置設定槽點成功

3.2我們把端口為7008的redis添加到叢集,把它作為7007的從節點

1)執行指令 ruby redis-trib.rb add-node 127.0.0.1:7008  127.0.0.1:7001

出現步驟2的結果證明添加節點OK

2)然後連接配接7008節點,執行指令redis-cli.exe -c -p 7008

3)連接配接成功後,執行指令

cluster replicate (後面跟主節點的ID,可從nodes-7007.conf中檢視)

檢視nodes-7008.conf可看到7008以成為7007的從節點

Redis叢集删除節點

1:如果删除的節點是主節點,這裡我們删除127.0.0.1:7007節點,這個節點有1000個哈希槽

首先要把節點中的哈希槽轉移到其他節點中,執行下面的指令

ruby redis-trib.rb reshard 127.0.0.1:7007

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

系統會提示我們要移動多少哈希槽 這個127.0.0.1:7007節點有1000個哈希槽,

輸入 1000

然後系統提示我們輸入要接收這些哈希槽的節點的ID,

這裡輸入 127.0.0.1:7000的節點ID(即為接受這些槽點的節點的id)

然後要我們選擇從那些節點中轉出哈希槽,

這裡一定要輸入 127.0.0.1:7007這個節點的ID(即為要删除的節點的id)

然後輸入 yes

最後一步,使用下面的指令把這個節點删除

ruby redis-trib.rb del-node 127.0.0.1:7007 (後跟7007的ID)

2:如果節點是從節點的,直接使用下面的指令删除即可。

rubyredis-trib.rbdel-node  127.0.0.1:7008  (後跟7008的ID)

叢集常用指令及說明

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

3、叢集優缺點

Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明
Windows下搭建Redis叢集,增删節點以及一些常用指令叢集常用指令及說明

4、叢集用戶端指令(redis-cli.exe -c -p 7000)

叢集

cluster info :列印叢集的資訊

cluster nodes :列出叢集目前已知的所有節點( node),以及這些節點的相關資訊。

節點

cluster meet <ip> <port> :将 ip 和 port 所指定的節點添加到叢集當中,讓它成為叢集的一份子。

cluster forget <node_id> :從叢集中移除 node_id 指定的節點。

cluster replicate <node_id> :将目前節點設定為 node_id 指定的節點的從節點。

cluster saveconfig :将節點的配置檔案儲存到硬碟裡面。

槽(slot)

cluster addslots <slot> [slot ...] :将一個或多個槽( slot)指派( assign)給目前節點。

cluster delslots <slot> [slot ...] :移除一個或多個槽對目前節點的指派。

cluster flushslots :移除指派給目前節點的所有槽,讓目前節點變成一個沒有指派任何槽的節點。

cluster setslot <slot> node <node_id> :将槽 slot 指派給 node_id 指定的節點,如果槽已經指派給

另一個節點,那麼先讓另一個節點删除該槽>,然後再進行指派。

cluster setslot <slot> migrating <node_id> :将本節點的槽 slot 遷移到 node_id 指定的節點中。

cluster setslot <slot> importing <node_id> :從 node_id 指定的節點中導入槽 slot 到本節點。

cluster setslot <slot> stable :取消對槽 slot 的導入( import)或者遷移( migrate)。

cluster keyslot <key> :計算鍵 key 應該被放置在哪個槽上。

cluster countkeysinslot <slot> :傳回槽 slot 目前包含的鍵值對數量。

cluster getkeysinslot <slot> <count> :傳回 count 個 slot 槽中的鍵  

桌面可視化工具

https://redisdesktop.com/download

參考了挺多,有點亂,不過慢慢看都能看懂

繼續閱讀