這是redis集群介紹的上篇,主要是關於Redis集群的搭建。後續將為大家介紹Redis集群的常用命令、Java操作Redis集群、以及與Spring/Spring MVC的整合等知識。
Redis集群搭建
要想搭建一個最簡單的Redis集群,那麼至少需要6個節點:3個Master和3個Slave。為什麼需要3個Master呢?如果你瞭解過Hadoop/Storm/Zookeeper這些的話,你就會明白一般分佈式要求基數個節點,這樣便於選舉(少數服從多數的原則)。
Redis集群模型
這裡,我將採用一種“偷懶”的方式,在一個Linux虛擬機上搭建6個節點的Redis集群。(因為開啟6個Linux虛擬機,我的電腦完全扛不住)
實際上,思路很簡單,我將在一臺節點上開啟6個Redis實例,並且這6個Redis各自有自己的端口。這樣的話,相當於模擬出了6臺機器了。然後在以這6個實例組建Redis集群就可以了。
第一步:為這6個實例創建好各自存放的目錄
想一想,為什麼要這樣做呢?
第二步:既然是要啟動6個Redis實例,自然需要準備各自的配置文件
拷貝redis.conf 6份
6個Redis實例的具體配置
具體來說,需要注意下:由於在一臺機器(192.168.99.121)上,因此每個實例應該有不同的端口;同時,每個實例顯然會有自己的存放數據的地方;開啟AOF模式;開啟集群配置;開啟後臺模式;
第三步:實際上,Redis集群的操作在後文你可以看到是通過Ruby腳本來完成的,因此我們需要安裝Ruby相關的RPM包,以及Redis和Ruby的接口包。
yum install ruby
yum install rubygems
gem install redis
第四步:讓Redis集群工作起來!
啟動6個Redis實例
接下來,我們要通過Ruby腳本來創建集群了。
redis-trib.rb是操作Redis集群的腳本
[root@mydream121 bin]# ./redis-trib.rb create --replicas 1 192.168.99.121:8001 192.168.99.121:8002 192.168.99.121:8003 192.168.99.121:8004 192.168.99.121:8005 192.168.99.121:8006
create redis cluster
redis cluster info
首先,我們來看一下創建集群命令中 --replicas 1,這個代表什麼意思呢?1其實代表的是一個比例,就是主節點數/從節點數的比例。那麼想一想,在創建集群的時候,哪些節點是主節點呢?哪些節點是從節點呢?答案是將按照命令中IP:PORT的順序,先是3個主節點,然後是3個從節點。這一點可以通過上面的2張圖片印證。
其次,注意到圖中slot的概念。slot對於Redis集群而言,就是一個存放數據的地方,就是一個槽。對於每一個Master而言,會存在一個slot的範圍,而Slave則沒有。在Redis集群中,依然是Master可以讀、寫,而Slave只讀。數據的寫入,實際上是分佈的存儲在slot中,這和以前1.X的主從模式是不一樣的(主從模式下Master/Slave數據存儲是完全一致的),因為Redis集群中3臺Master的數據存儲並不一樣。這一點將在後續的實驗中得到驗證。
第五步:驗證Redis集群搭建是否成功
cluster info/cluster nodes
搭建起來的Redis集群
到這裡,Redis集群的搭建就完畢了,See U
原文:jianshu.com/p/dbc62ed27f03
閱讀更多 java進階架構師 的文章