轉載:juejin.im/post/5ad54d76

作者:SnailClimb

這裡總結一下redis集群的搭建以便日後所需同時也希望能對你有所幫助。

筆主這裡使用的是Centos7

一 redis的安裝

Redis是c語言開發的。

安裝redis需要c語言的編譯環境。如果沒有gcc需要在線安裝:yum install gcc-c++

第一步:獲取源碼包:wget download.redis.io/relea

第二步:解壓縮redis:tar zxvf redis-3.0.0.tar.gz

第三步:編譯。進入redis源碼目錄(cd redis-3.0.0)。執行 make

第四步:安裝。make install PREFIX=/usr/local/redis

PREFIX參數指定redis的安裝目錄。一般軟體安裝到/usr目錄下

這樣Redis就成功裝在了我們的usr/local/redis目錄下。

第五步:設置後台啟動:

[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/bin/

(把/root/redis-3.0.0/redis.conf複製到/usr/local/redis/bin目錄下)

修改配置文件:把daemonize後面的參數改為yes

測試啟動:[root@localhost bin]# ./redis-server redis.conf

查看redis進程:[root@localhost bin]# ps aux|grep redis

二 redis集群的搭建

2.1 redis集群(redis-cluster)原理

3.0版本之前的redis是不支持集群的,3.0版本之前想要搭建redis集群的話需要中間件來找到存值和取值的對應節點。

3.0版本以後的redis集群架構圖:

那麼這是如何實現的呢???

Redis 集群中內置了 16384個哈希槽,當需要在 Redis 集群中放置一個 key-value 時,redis 先對 key 使用 crc16 演算法算出一個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大致均等的將哈希槽映射到不同的節點。

根據下圖應該更容易理解了。(圖片來源:cnblogs.com/liyasong/p/

redis集群投票機制

redis集群中有多台redis伺服器不可避免會有伺服器掛掉。redis集群伺服器之間通過互相的ping-pong判斷是否節點可以連接上。如果有一半以上的節點去ping一個節點的時候沒有回應,集群就認為這個節點宕機了。

上面就是我們常說的為了容錯而生的redis集群投票機制

2.2 redis集群(redis-cluster)的搭建

redis集群搭建起來很簡單,我們這裡用一台虛擬機模擬搭建包含6個redis伺服器的集群,實際工作中與使用多台伺服器搭建是一個操作。

我們上面已經裝好了一個redis實例,現在我們需要把它複製6份並修改相應埠。

第一步: 新建redis-cluster文件夾

第二步:複製redis實例

[root@Snailclimb local]# cp redis/bin redis-cluster/redis1

如果你複製過去的redis實例有dump.rdb文件的話最好也要刪除。

第三步:修改配置文件

修改bin目錄下的redis.conf配置文件

第四步:繼續複製5個redis實例

我們用上面的redis實例複製5個redis實例,然後把他們的配置文件的埠號改為7002-7006

第五步 :新建一個執行腳本:

[root@Snailclimb redis-cluster]# vim start-all.sh

腳本內容如下:

為腳本賦予執行許可權:

[root@Snailclimb redis-cluster]# chmod u+x start-all.sh

同時啟動6個redis實例:

[root@Snailclimb redis-cluster]# ./start-all.sh

第六步:將redis-trib.rb複製到redis-cluster目錄下面:

並為腳本賦予執行許可權:[root@Snailclimb redis-cluster]# chmod u+x redis-trib.rb

第七步:安裝ruby和ruby運行環境

yum install ruby

yum install rubygems

gem install redis-3.0.0.gem

第八步:使用ruby腳本搭建集群:

[root@Snailclimb redis-cluster]#./redis-trib.rb create --replicas 1 192.168.25.155:7001 192.168.25.155:7002 192.168.25.155:7003 192.168.25.155:7004 192.168.25.155:7005 192.168.25.155:7006

查看集群:

注意:埠修改錯誤或者沒有將cluster-enabled yes前的注釋去掉都會導致集群搭建失敗。總的來說,redis集群搭建還是很簡單的。

這樣一個完整的redis集群就已經搭建完畢了。。。

三 redis單機版與集群版的測試使用

添加Maven依賴:

單機版redis測試:

使用連接池測試單機版redis:

測試集群版redis:

四 如何在JavaWeb項目中實現單機和集群無縫切換使用

我們如何才能在項目中實現自己想用的單機redis就用單機redis想用redis集群就用redis集群而不要修改項目代碼呢???

創建相應類和介面

介面:

集群版使用:

單機版使用:

applicationContext-redis.xml

測試代碼:

這樣在實際項目中我們無需修改代碼就可以實現單機和集群版的相關切換。。

註:代碼塊都以截圖的形式,如觀看有不便還請諒解

推薦閱讀:

相关文章