最近面試才發現自己忽視和Redis的重要性,所以從頭來開始好好學習一下redis。
首先我們需要下載:下載地址
下載解壓後我們會得到這樣一個結構:
接下來,啓動它: redis-server.exe
這個時候我們已經吧服務端啓動了。(此時爲前端啓動)
然後我們再把客戶端啓動: redis-cli.exe -h 127.0.0.1 -p 6379
注意不要把原來的服務端關閉哦,端口號也要注意需要統一。
這個時候就代表我們已經啓動成功了。
爲了測試我們的redis是否可用,我們可以設置鍵值對來測試。
實驗結果正常,完美收工
接下來讓我們進行windows下集羣的搭建。
我們使用redis-trib.rb工具來創建Redis集羣,由於該文件是用ruby語言寫的,所以需要安裝Ruby開發環境,以及驅動redis-xxxx.gem。
首先,我們需要安裝ruby環境,然後安裝redis驅動 gem install redis
因爲我的電腦已經安裝過了ruby,所以忽略了ruby的安裝。
然後我們先把我們之前下好的redis文件夾複製六份(第一個文件夾是原生的,沒變過,用作單機,剩下的六個纔是集羣使用的)
修改每個目錄下面的 redis.windows.conf 文件
我們可以按照我們的文件夾後面的名字以此修改爲7000 7001 7002 這裏我們就已經修改了我們每個redis的端口號。
同時我們需要修改當前文件以下配置:
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 15000
appendonly yes
cluster-enabled 這個配置代表這是個集羣節點
cluster-config-file 這個是節點配置文件 端口號隨着當前redis不同而不同,且會隨着redis啓動自動創建
appendonly 開啓持久化
等到這些修改了好了之後,我們創建一個腳本來方便我們啓動redis。(端口記得更換哦)
title redis-7001
redis-server.exe redis.windows.conf
然後依次點擊我們的redis的啓動腳本
啓動好了之後我們需要下載我們的工具redis-trib.rb。下載地址
然後輸入: ruby 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
回車會提示如下:
我們輸入 yes,會提示:
先不管,我們測試一下,我們先打開一個節點的客戶端:
redis-cli.exe -h 127.0.0.1 -p 7000 -c(h自然是主機號,p是端口號,c連接集羣結點時使用,此選項可防止moved和ask異常。)
進行set get 發現確實兩個節點下的數據已經共同了。說明已經搭建成功。
同時我們也可以打開輸入 cluster nodes 查看主從節點
附言:
1、後端啓動:
對於這種服務端都需要打開一個窗口,也就是前端啓動,所以我們可以設置爲後端啓動
1. 在Redis的安裝目錄 進入 DOS窗口
2. 輸入:redis-server --service-install redis.windows.conf --loglevel verbose ( 安裝redis服務 )
3. 輸入:redis-server --service-start ( 啓動服務 )
4. 輸入:redis-server --service-stop (停止服務)
或者我們也可以把內容寫在腳本里面,分別命名爲start和stop。
2、關閉與重新啓動集羣
關閉集羣:將所有redis服務一個一個關閉即可。
重啓集羣:將所有redis服務一個一個啓動即可。so easy
3、添加與刪除節點
添加節點
ruby redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000 向集羣添加主節點
ruby redis-trib.rb add-node --slave 127.0.0.1:7006 127.0.0.1:7000 向集羣中添加從節點,它會隨機分配給任意一個主節點
第一個參數:新添加節點的地址以及端口127.0.0.1:7006
第二個參數:現有集羣中任意一個服務端地址以及端口127.0.0.1:7000
ruby redis-trib.rb add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 127.0.0.1:7006 127.0.0.1:7000 向集羣中定向的主節點添加從節點
--master-id用來指定新節點的master節點。如果不設置該參數,則會隨機爲節點選擇master節點。
重新分槽
新添加的主節點不含任何槽需要給他分配一些槽。參數爲集羣中任意舊地址
ruby redis-trib.rb reshard 127.0.0.1:7000
接下來會讓你輸入分配的槽數,範圍在1-16384,我輸入4000.
然後問我他的節點是什麼,輸入節點id
然後會詢問你從哪個節點分出這些槽數,我選擇 all,所有節點中。
最後會詢問你是否執行這個分槽計劃,輸入yes開始執行計劃。
移除節點
使用del-node命令移除節點。
如果是主節點,需要先將槽轉移到其他節點上面。如果是從節點可無需此步驟。
轉移和分配指令基本一致,最重要的是在Source node的時候,選擇的是 all 還是 done
ruby redis-trib.rb reshard 127.0.0.1:7000
在這裏我們需要輸入我們要轉移到數量,因爲我們是轉移走,所以輸入他所擁有的槽數
然後輸入我們要轉移給那個節點,輸入接收的節點id
然後再輸入移除的節點id,在輸入done
等到回車後,我們在輸入yes,就可以等待刪除節點了。
等到我們把槽轉移走了之後,就可以刪除節點了
ruby redis-trib.rb del-node 127.0.0.1:7006 211901d93f55093758fdd45cd7d0d87c4ca89696
第一個參數:任意集羣中現有的地址 127.0.0.1:7006
第二個參數:你想移除的節點id 211901d93f55093758fdd45cd7d0d87c4ca89696(該id可以在想要移除的節點nodes.conf文件中找到,也可以在查詢節點的時候發現)