【Redis】集羣教程(Windows)

概述html

Redis Cluster provides a way to run a Redis installation where data is automatically sharded across multiple Redis nodesnode

Redis集羣提供一個在多個Redis節點數據自動共享的方式,簡單來講就是添加服務器的數量,達到git

  • 高可用,讓Redis服務長時間有效運行,不會由於硬件/軟件問題致使不可用
  • 可擴展性,動態添加節點/刪除節點,達到增長性能/減小服務器資源
  • 分佈式,節點能夠不是
  • 容錯,若其中一臺服務器故障掛了Redis也能繼續使用(前提是有從節點而且可用)

 

Redis集羣數據分片github

Redis 集羣沒有使用一致性hash, 而是引入了 哈希槽的概念.redis

Redis 集羣有16384個哈希槽,每一個key經過CRC16校驗後對16384取模來決定放置哪一個槽.集羣的每一個節點負責一部分hash槽,舉個例子,好比當前集羣有3個節點,那麼:ruby

  • 節點 A 包含 0 到 5500號哈希槽.
  • 節點 B 包含5501 到 11000 號哈希槽.
  • 節點 C 包含11001 到 16384號哈希槽

這種結構的好處就是很是容易增長/刪除節點,而且不會影響集羣的使用服務器

  • 增長節點,將原來節點的分配部分哈希槽給新節點
  • 刪除節點,將刪除的節點哈希槽分配給現有的節點上便可

 

Redis集羣節點通信併發

由於Redis集羣是把數據分佈存放在不一樣客戶端,這樣作的好處就是減小每臺機器的壓力,提升併發處理能力,由於咱們只要進入任一節點,便可使用整個集羣,這就須要節點之間互相通信,這個是Redis內部處理。app

Every Redis Cluster node requires two TCP connections open. The normal Redis TCP port used to serve clients, for example 6379, plus the port obtained by adding 10000 to the data port, so 16379 in the example分佈式

每個Redis集羣節點都是須要兩個端口,一個用於客戶端鏈接,一個用於節點數據傳輸(Ping-Pong機制),數據端口是在客戶端口的基礎上加10000,例如,端口6379,數據端口16379,因此在多臺機器部署集羣須要注意防火牆是否把數據屏蔽 。

 

環境準備

1.安裝Redis  下載地址

2. 安裝Ruby,由於Redis集羣管理是用ruby開發  下載地址

3. 下載edis-trib.rb文件,放在Redis安裝文件夾內   下載地址

4. 安裝Ruby的Redis驅動,直接在cmd執行(安裝的時候把Ruby放在環境變量,不然進到Bin執行)    

gem install redis

出現Successfully installed 表明安裝成功

 

 

 

搭建Redis集羣

Redis集羣至少須要3個節點,就按最少的3個節點搭建一個集羣

1. 準備3個配置文件,修改各自的端口和appendfilename,固然若是在3臺機器上運行,什麼都不須要修改

port 6379
cluster-enabled yes
cluster-config-file nodes.6379.conf  
cluster-node-timeout 5000
appendonly yes
appendfilename "appendonly.6379.aof"

 

2. 準備bat文件啓動3個redis節點(非必須,能夠手動cmd啓動,配置相應配置文件),bat文件須要在redis安裝目錄執行

title redis-cluster
start redis-server.exe redis.6379.conf
start redis-server.exe redis.6380.conf
start redis-server.exe redis.6381.conf

 

3. 用redis-trib建立集羣,在cmd執行

redis-trib.rb create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381

執行完成,輸入yes更新配置文件,最終輸出各個節點信息,哈希槽分配狀況。

 

 

至此,Redis集羣已經搭建好,這裏只有3個主節點,若想從節點,只需多加3個Redis節點,命令加上--replicas參數就能夠。

 

測試Redis集羣

進入redis-cli集羣模式

redis-cli -c

能夠看出,寫入讀取,Redis根據Key計算的hash值在各個節點自動重定向

打開剛剛開啓的幾個Redis實例,能夠看出他們以前一直在不斷通信

 

相關文章
相關標籤/搜索