1.背景分析
redis使用中遇到的瓶頸
我們日常在對於redis的使用中,經常會遇到一些問題
1、高可用問題,如何保證redis的持續高可用性。
2、容量問題,單實例redis內存無法無限擴充,達到32G後就進入了64位世界,性能下降。
3、併發性能問題,redis號稱單實例10萬併發,但也是有盡頭的。
redis-cluster的優勢
1、官方推薦,毋庸置疑。
2、去中心化,集羣最大可增加1000個節點,性能隨節點增加而線性擴展。
3、管理方便,後續可自行增加或摘除節點,移動分槽等等。
4、簡單,易上手。
redis-cluster名詞介紹
1、master 主節點、
2、slave 從節點
3、slot 槽,一共有16384數據分槽,分佈在集羣的所有主節點中。
redis-cluster簡介
圖中描述的是六個redis實例構成的集羣
6379端口爲客戶端通訊端口
16379端口爲集羣總線端口
集羣內部劃分爲16384個數據分槽,分佈在三個主redis中。
從redis中沒有分槽,不會參與集羣投票,也不會幫忙加快讀取數據,僅僅作爲主機的備份。
三個主節點中平均分佈着16384數據分槽的三分之一,每個節點中不會存有有重複數據,僅僅有自己的從機幫忙冗餘。
2.環境準備
Ruby語言運行環境、Ruby下的RubyGems、以及創建Redis集羣的工具redis-trib.rb命令文件。
3.安裝redis
下載地址:http://download.redis.io/releases/ 可以選擇自己使用的版本(集羣使用3.0版本以上),本次使用3.0.5版本作爲示例
解壓後,大概目錄爲下圖:
可以點擊一下redis-server.exe執行一下,是否可以啓動成功,如下圖:
集羣搭建:
把 redis 解壓後,再複製出額外6份,配置 三主三從集羣。 由於 redis 默認端口號爲 6379,那麼其它6份的端口可以爲6380,6381,6382,6383,6384,6385。 並且把目錄使用名字+端口號命名
複製文件redis.windows.conf爲redis.conf,添加內容爲下圖:
依次修改port爲6380、6381、6382、6383、6384、6385。如果cluster-enabled 不爲yes, 那麼在使用JedisCluster集羣代碼獲取的時候,會報錯。cluster-node-timeout 調整爲 5000,那麼在創建集羣的時候,不會超時。cluster-config-file nodes.conf 是爲該節點的配置信息,這裏使用 nodes.conf命名方法。服務啓動後會在目錄生成該文件。
每個redis服務的啓動方式如下圖:
依次啓動六個服務,顯示啓動成功。
4.安裝ruby
下載地址:http://www.ruby-lang.org/en/downloads/ 也可以到開源網站獲取,本次使用rubyinstaller-2.2.6-x64進行演示
安裝過程簡單:
4.1 安裝Redis的Ruby驅動redis-xxxx.gem
下載地址 https://rubygems.org/pages/download,下載後解壓,當前目錄切換到解壓目錄中,如 D:\rubygems-2.6.12 然後點擊執行文件執行 ruby setup.rb。
4.2 安裝集羣腳本redis-trib
下載地址 https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb
打開該鏈接如果沒有下載,而是打開一個頁面,那麼將該頁面保存爲redis-trib.rb,建議保存到一個Redis的目錄下,例如放到6380目錄下。
集羣的命令爲
redis-trib.rb create --replicas 1 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 127.0.0.1:6385
--replicas 1 表示每個主數據庫擁有從數據庫個數爲1。master節點不能少於3個,所以我們用了6個redis
4.3 構建集羣
把每個節點下服務啓動, 在切換到redis目錄在命令行中執行 redis-trib.rb create --replicas 1 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 127.0.0.1:6385,如下圖,啓動成功:
4.4 測試集羣
使用Redis客戶端Redis-cli.exe來查看數據記錄數,以及集羣相關信息
命令 redis-cli –c –h ”地址” –p "端口號" ; c 表示集羣
輸入dbsize查詢 記錄總數
輸入cluster info可以從客戶端的查看集羣的信息
5.借鑑文章
在windows上搭建redis集羣(redis-cluster)https://blog.csdn.net/zsg88/article/details/73715947
Redis入門之集羣(手動搭建)https://blog.csdn.net/candy_rainbow/article/details/70216682