windows 搭建 redis 集群環(huán)境

前言

redis集群
如果部署到多臺(tái)電腦,就跟普通的集群一樣;
因?yàn)镽edis是單線程處理的,多核CPU也只能使用一個(gè)核,所以部署在同一臺(tái)電腦上,通過運(yùn)行多個(gè)Redis實(shí)例組成集群,然后能提高CPU的利用率。

一、集群節(jié)點(diǎn)配置啟動(dòng)

1.redis 單機(jī)安裝啟動(dòng)(這里不做介紹)

2.redis 集群節(jié)點(diǎn)啟動(dòng)

  • 復(fù)制 redis 節(jié)點(diǎn)文件夾到集群文件夾 redis-cluster 下,修改為 7001 7002 7003 7004 7005 7006
xcopy d:\redis\ D:\redis-cluster\redis
// 依次重命名為 7001 7002 7003 7004 7005 7006
rename redis 7001
  • 修改各個(gè)節(jié)點(diǎn)配置文件 redis.windows.conf 中下列屬性,文件以 UTF-8 格式保存
    port 7001
    cluster-enabled yes
    cluster-config-file nodes-7001.conf
    cluster-node-timeout 15000
    appendonly yes

  • 啟動(dòng)各個(gè)節(jié)點(diǎn)

// 各個(gè)節(jié)點(diǎn)如下操作加入系統(tǒng)服務(wù)
D:\redis-cluster\7001>redis-server.exe --service-install redis.windows.conf --service-name redis7001 --port 7001 --loglevel verbose
// 啟動(dòng)節(jié)點(diǎn)服務(wù)
D:\redis-cluster\7001>redis-server.exe --service-start --service-name redis7001

二、安裝 Ruby 環(huán)境

安裝此環(huán)境的原因是因?yàn)槲覀冃枰褂肦uby Gems 中的redis-trib.rb來創(chuàng)建和操作集群。

  • 安裝 Ruby
  • 修改 Ruby 鏡像源
// 刪掉原來的源
gem sources --remove https://rubygems.org/ 
// 添加新源
gem sources -a http://ruby.taobao.org/
// 查看現(xiàn)有的源
gem sources -l 
// 安裝redis依賴
gem install redis 

\color{red}{注意}:gem install redis 安裝 redis 依賴時(shí)要與所安裝的 redis 版本一致才行。

  • 手動(dòng)安裝 redis 依賴
    1).下載
    2).安裝
    gem install --local D:\Ruby24-x64\redis-3.2.1.gem

三、創(chuàng)建 Redis集群

1.下載Redis官方提供的創(chuàng)建Redis集群的ruby腳本文件redis-trib.rb,路徑如下:

https://raw.githubusercontent.com/MSOpenTech/redis/3.2/src/redis-trib.rb
\color{red}{注意:最好根據(jù)自己所使用的版本,修改該鏈接獲取對(duì)應(yīng)的版本,否則可能出現(xiàn)命令執(zhí)行閃退的情況。}

2.在 D:\redis-cluster\ 目錄下創(chuàng)建 redis-trib.rb 文件,復(fù)制上面 url 打開的內(nèi)容到該文件中
3.使用 ruby 創(chuàng)建redis集群
D:\redis-cluster>ruby redis-trib.rb create --replicas 1 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 127.0.0.1:7006

redis-trib.rb create 創(chuàng)建集群

redis-trib.rb 支持的操作

  • create:創(chuàng)建集群
  • check:檢查集群
  • info:查看集群信息
  • fix:修復(fù)集群
  • reshard:在線遷移slot
  • rebalance:平衡集群節(jié)點(diǎn)slot數(shù)量
  • add-node:添加新節(jié)點(diǎn)
  • del-node:刪除節(jié)點(diǎn)
  • set-timeout:設(shè)置節(jié)點(diǎn)的超時(shí)時(shí)間
  • call:在集群所有節(jié)點(diǎn)上執(zhí)行命令
  • import:將外部redis數(shù)據(jù)導(dǎo)入集群

參數(shù)說明
--replicas 1:指定集群中每個(gè)主節(jié)點(diǎn)配備幾個(gè)從節(jié)點(diǎn),這里設(shè)置為1。

命令執(zhí)行結(jié)果
如下圖顯示則集群創(chuàng)建成功

image.png

可通過命令檢查
ruby redis-trib.rb check 127.0.0.1:7001

Redis集群數(shù)據(jù)分配策略:

采用一種叫做哈希槽 (hash slot)的方式來分配數(shù)據(jù),redis cluster 默認(rèn)分配了 16384 個(gè)slot,當(dāng)我們set一個(gè)key 時(shí),會(huì)用CRC16算法來取模得到所屬的slot,然后將這個(gè)key分到哈希槽區(qū)間的節(jié)點(diǎn)上,具體算法就是:CRC16(key) % 16384。

\color{red}{注意:必須要3個(gè)或以上的主節(jié)點(diǎn),否則在創(chuàng)建集群時(shí)會(huì)失敗}
三個(gè)節(jié)點(diǎn)分別承擔(dān)的slot 區(qū)間是:

節(jié)點(diǎn)A覆蓋0-5460;
節(jié)點(diǎn)B覆蓋5461-10922;
節(jié)點(diǎn)C覆蓋10923-16383.

redis cluster的哈希槽算法:CRC16(‘name’)%16384

4.測試 redis 集群

1.連接 redis

cd D:\redis-cluster\7001\
// 連接集群方式一:
redis-cli.exe -h 127.0.0.1 -c -p 7001
// 連接集群方式二:
redis-cli.exe -c -p 7001

參數(shù)說明
-c:啟用集群模式連接 redis 服務(wù)端

2.測試,如下圖所示,連接 7001 設(shè)置值,然后根據(jù) redis 集群數(shù)據(jù)分配策略,數(shù)據(jù)被存放到了 7002 節(jié)點(diǎn)上。


image.png

總結(jié)

1.創(chuàng)建 redis 集群時(shí)注意 ruby redis 驅(qū)動(dòng)的版本,否則可能會(huì)出現(xiàn)執(zhí)行集群閃退的情況
2.集群中節(jié)點(diǎn)的核心配置文件為 nodes-xxx.conf,主要通過該文件記錄與集群中各節(jié)點(diǎn)的關(guān)系

參考資料
https://www.cnblogs.com/yangjinwang/p/8581313.html
https://www.cnblogs.com/tommy-huang/p/6240083.html
https://www.cnblogs.com/yaozb/p/6911395.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容