玩轉Redis叢集(上)

神一樣的程式設計發表於2018-10-08

這是redis叢集介紹的上篇,主要是關於Redis叢集的搭建。後續將為大家介紹Redis叢集的常用命令、Java操作Redis叢集、以及與Spring/Spring MVC的整合等知識。

Redis叢集搭建

要想搭建一個最簡單的Redis叢集,那麼至少需要6個節點:3個Master和3個Slave。為什麼需要3個Master呢?如果你瞭解過Hadoop/Storm/Zookeeper這些的話,你就會明白一般分散式要求基數個節點,這樣便於選舉(少數服從多數的原則)。

玩轉Redis叢集(上)
Redis叢集模型

這裡,我將採用一種“偷懶”的方式,在一個Linux虛擬機器上搭建6個節點的Redis叢集。(因為開啟6個Linux虛擬機器,我的電腦完全扛不住)

實際上,思路很簡單,我將在一臺節點上開啟6個Redis例項,並且這6個Redis各自有自己的埠。這樣的話,相當於模擬出了6臺機器了。然後在以這6個例項組建Redis叢集就可以了。

第一步:為這6個例項建立好各自存放的目錄

玩轉Redis叢集(上)
想一想,為什麼要這樣做呢?

第二步:既然是要啟動6個Redis例項,自然需要準備各自的配置檔案

玩轉Redis叢集(上)
拷貝redis.conf 6份


玩轉Redis叢集(上)
6個Redis例項的具體配置

具體來說,需要注意下:由於在一臺機器(192.168.99.121)上,因此每個例項應該有不同的埠;同時,每個例項顯然會有自己的存放資料的地方;開啟AOF模式;開啟叢集配置;開啟後臺模式;

第三步:實際上,Redis叢集的操作在後文你可以看到是通過Ruby指令碼來完成的,因此我們需要安裝Ruby相關的RPM包,以及Redis和Ruby的介面包。

玩轉Redis叢集(上)
yum install ruby
玩轉Redis叢集(上)
yum install rubygems
玩轉Redis叢集(上)
gem install redis

第四步:讓Redis叢集工作起來!

玩轉Redis叢集(上)
啟動6個Redis例項

接下來,我們要通過Ruby指令碼來建立叢集了。

玩轉Redis叢集(上)
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

玩轉Redis叢集(上)
create redis cluster
玩轉Redis叢集(上)
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叢集搭建是否成功

玩轉Redis叢集(上)
cluster info/cluster nodes
玩轉Redis叢集(上)
搭建起來的Redis叢集


到這裡,Redis叢集的搭建就完畢了,See U~



相關文章