1、Redis Cluster集羣簡介node
Redis Cluster是Redis官方提供的分佈式解決方案,在3.0版本後推出的,有效地解決了Redis分佈式的需求,當一個節點掛了能夠快速的切換到另外一個節點,當遇到單機內存、併發等瓶頸時,能夠採用分佈式方案要解決問題。linux
2、集羣原理redis
Redis Cluster集羣採用了P2P的模式,徹底去中心化,Redis把全部的Key分紅了16384個slot,每一個Redis實例負責其中一部分slot,集羣中的全部信息(節點、端口、slot等),都經過節點之間按期的數據交換而更新,Redis客戶端能夠在任意一個Redis實例發出請求,若是所需數據不在該實例中,經過重定向命令引導客戶端訪問所需的實例。ruby
若是想學習Java工程化、高性能及分佈式、深刻淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友能夠加個人Java高級交流:854630135,羣裏有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給你們。服務器
其結構特色:架構
3、集羣搭建併發
要讓集羣正常工做至少須要3個主節點,一共就須要6個節點,其中3個爲主節點,3個爲從節點,爲了簡單在下面在一臺機器上演示,演示使用了linux服務器上7000到7005的6個端口。app
wget http://download.redis.io/releases/redis-3.2.4.tar.gz tar -zxvf redis-3.2.4.tar.gz cd redis-3.2.4/ make && make install
cd src cp redis-trib.rb /usr/local/bin
mkdir redis_cluster cd redis_cluster/ mkdir 7000 7001 7002 7003 7004 7005 cp redis.conf redis_cluster/7000 cp redis.conf redis_cluster/7001 cp redis.conf redis_cluster/7002 cp redis.conf redis_cluster/7003 cp redis.conf redis_cluster/7004 cp redis.conf redis_cluster/7005
按下面提示修改6個配置文件分佈式
port 7000 //端口7000,7001,7002... bind 本機ip //默認ip爲127.0.0.1 須要改成其餘節點機器可訪問的ip 不然建立集羣時沒法訪問對應的端口,沒法建立集羣 daemonize yes //redis後臺運行 pidfile /var/run/redis_7000.pid //pidfile文件對應7000,7001,7002 cluster-enabled yes //開啓集羣 把註釋#去掉 cluster-config-file nodes.conf //集羣的配置 配置文件首次啓動自動生成 cluster-node-timeout 15000 //請求超時 默認15秒,可自行設置 appendonly yes //aof日誌開啓 有須要就開啓,它會每次寫操做都記錄一條日誌 dir /root/redis-3.2.4/redis_cluster/7000 //目錄,端口7000,7001,7002... ,必須配置,不然沒法啓動
./src/redis-server redis_cluster/7000/redis.conf ./src/redis-server redis_cluster/7001/redis.conf ./src/redis-server redis_cluster/7002/redis.conf ./src/redis-server redis_cluster/7003/redis.conf ./src/redis-server redis_cluster/7004/redis.conf ./src/redis-server redis_cluster/7005/redis.conf
yum install ruby yum install -y rubygems gem install redis -v 3.2.2
cd /usr/local/bin ./redis-trib.rb create --replicas 1 192.168.0.204:7000 192.168.0.204:7001 192.168.0.204:7002 192.168.0.204:7003 192.168.0.204:7004 192.168.0.204:7005
運行結果以下:微服務
Redis Cluster啓動成功截圖
若是一切順利,你會看到相似截圖上的消息: [OK] All 16384 slots covered, 這說明Redis的Cluster集羣環境搭建成功。
簡單解釋一下這個命令:調用 ruby 命令來進行建立集羣,--replicas 1 表示主從節點比例爲 1:1,即一個主節點對應一個從節點;而後,默認給咱們分配好了每一個主節點和對應從節點服務,以及solt的大小,由於在Redis集羣中有且僅有16383個solt,默認狀況會給咱們平均分配,固然你能夠指定,後續的增減節點也能夠從新分配。
M: 5237fa04bd793832b605d92ceb1d2f493da22e43 爲主節點Id
S: b6b696c11bbffa8f9d4e6397ef4d27b0b54fea32 192.168.0.204:7003 replicates 5237fa04bd793832b605d92ceb1d2f493da22e43 從節點下對應主節點Id
目前來看,7000-7002 爲主節點,7003-7005 爲從節點,並向你確認是否贊成這麼配置,輸入yes後,會開始集羣建立。
4、驗證集羣
./redis-cli -c -h 192.168.0.204 -p 7001 cluster info cluster nodes
運行結果以下:
功截圖
歡迎工做一到八年的Java工程師朋友們加入Java高級交流:854630135
本羣提供免費的學習指導 架構資料 以及免費的解答
不懂得問題均可以在本羣提出來 以後還會有直播平臺和講師直接交流噢