概述html
Redis Cluster provides a way to run a Redis installation where data is automatically sharded across multiple Redis nodesnode
Redis集羣提供一個在多個Redis節點數據自動共享的方式,簡單來講就是添加服務器的數量,達到git
Redis集羣數據分片github
Redis 集羣沒有使用一致性hash, 而是引入了 哈希槽的概念.redis
Redis 集羣有16384個哈希槽,每一個key經過CRC16校驗後對16384取模來決定放置哪一個槽.集羣的每一個節點負責一部分hash槽,舉個例子,好比當前集羣有3個節點,那麼:ruby
這種結構的好處就是很是容易增長/刪除節點,而且不會影響集羣的使用服務器
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實例,能夠看出他們以前一直在不斷通信
轉發請標明出處:https://www.cnblogs.com/WilsonPan/p/12643221.html