操作系統:win10 64位
redis版本:3.2.1-x64
ruby版本:2.5.1-1-x64
rubygems版本:2.7.6
今天突然想簡單的搭建一個redis的集群,因為系統是Windows上的,所以就網上查找了一番搭建集群的相關博客和攻略,經過各種問題后,成功運行了。現在記下來,省的忘記了。。。
其中相關程序的版本經過搭建后,就暫時確立為以上版本,放在百度雲盤上,地址:https://pan.baidu.com/s/1D5Xyl-3fonr8mKUlNQA2Ug,密碼:00x5。搭建過程中出現過一些問題,有些是因為ruby版本太低,有些是安裝不正確等各種因素,具體的一些原因可以查看博客https://blog.csdn.net/asas1314/article/details/50203923,上面總結的挺好的,就不詳細講了。
一、 下載redis
下載上述百度雲盤中的redis,解壓到任意文件夾中,我直接下載到桌面上了,就干脆解壓到桌面上去了,里面文件如下所示(其中的redis-trib.rb是沒有的,需要另外下載的):
二、 配置三主三從集群
解壓后,將redis復制五份,配置三主三從集群,由於redis默認端口為6379,所以另外五份分別為6380,6381,6382,6383,6384。我建立的如下所示:
其中每一個文件夾都是一個redis

三、 修改每一份redis的配置
以6379為例,打開文件夾中的redis.windows.conf文件,分別修改里面的如下數據:
port 6379 //修改默認端口,與文件夾相同即可
cluster-enabled yes //開啟實例的集群模式
cluster-config-file nodes-6379.conf //設定保存節點配置文件的路徑,節點文件自動生成,無需修改
cluster-node-timeout 15000 //調整為 15000,那么在創建集群的時候,不會超時。
appendonly yes //開啟appendonly模式后,redis將每一次寫操作請求都追加到appendonly.aof文件中
注意:修改配置文件的時候去掉注釋的部分,前面不能有空格
同時還有一個文件 redis.windows-service.conf也需要修改相同之處,保存即可
另外,在每個文件夾中寫一個bat用來啟動redis,內容如下:
title redis-6379
redis-server.exe redis.windows.conf
建立完成之后,可以分別點擊每個文件夾中的bat,啟動每個redis。
四、 安裝ruby
redis建立的的集群需要ruby環境,所以下載雲盤中的rebyinstaller,全部下一步,該勾選的全部勾選上,
路徑選擇其他或者默認即可。之前因為下載安裝的2.4.4-1的版本,安裝之后出現了點問題,所以升級了ruby為2.5.1-1的版本。
五、 安裝rubygems
下載雲盤的版本后解壓縮,啟動cmd進入到解壓后的文件夾中,直接運行ruby setup.rb執行安裝即可

上面的命令執行安裝完后,接着執行命令 gem install redis,安裝redis的相關依賴。

六、下載集群腳本redis-trib.rb
可以用雲盤上傳的那個。或者在百度下載其他腳本,我是將文件放到了D:/Redis目錄下

七、 執行集群構建腳本
進入到redis-trib.rb所在的文件夾中,執行命令redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380
127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384,即可構建集群。

其中會出現Can I set the above configuration? (type 'yes' to accept),輸入yes,
最后出現兩個OK的時候差不多就是構建成功了。其中上面也可以看到主從節點的對應關系,如圖:

八、 測試集群
例如進入6379的文件夾,輸入命令redis-cli.exe -h 127.0.0.1 -p 6379 -c(h自然是主機號,p是端口號,c連接集群結點時使用,此選項可防止moved和ask異常。)后,
開啟redis,然后,例如輸入一個set name hello,然后集群會自動將這個保存到6380的redis中,集群之間也會自動的跳轉過去,然后在6380中去get name,自然可以獲取的到。
九、 關閉和重新啟動集群
網上查看了很久,似乎關閉和重新啟動集群主要是關閉redis服務和重新啟動redis服務,其中靠譜的解答如下:
(1)通過redis-cli連接服務器后執行shutdown命令,則執行停止redis服務操作。
(2)可以使用shutdown命令關閉redis服務器外,還可以使用kill+進程號的方式關閉redis服務。
(3)不要使用Kill 9方式關閉redis進程,這樣redis不會進行持久化操作,除此之外,還會造成緩沖區等資源不能優雅關閉,極端情況下會造成AOF和復制丟失數據的情況
(4)shutdown還有一個參數,代表關閉redis服務前是否生產持久化文件
shutdown save|nosave
