前言:redis做爲一款高效的NOSQL數據庫已經深刻貫徹和落實到咱們的平常開發代碼中,做爲緩存、時間控制、數據倉庫、隊列等使用方法層出不窮,簡直是開寫代碼、居家旅行之必備良藥。曾經,咱們的項目都是單體的,直到後來逐漸演變爲微服務—— 一個將咱們的工程解耦成多個工程的體系。而後隨着咱們項目的訪問量愈來愈高,後臺的吞吐量也愈來愈大。若是咱們還採用的單體redis,性能很容易造成瓶頸。如何突破單體redis帶來的功能受限?如何突破性能帶來的問題?這時咱們就能夠考慮橫向擴展,搭建redis集羣。正所謂:衆人拾柴火焰高,原來一顆小火柴不足以照亮整個房子,一旦人多了,火柴多了,那麼散發出來的火焰就會更亮、更熱,集羣其實就是這個道理,更多的服務器參與工做就會擺脫單體應用帶來的性能上的侷限。本篇博客就來從零開始搭建一個redis集羣。注:本篇博客搭建的redis集羣採用的linux服務器是centos6.5,redis版本是4.0.6,由於沒有多臺服務器,因此採用的是一臺服務器模擬安裝多個redis節點的方式搭建服務器;html
本篇博客的目錄node
一:準備linux
二:搭建redis集羣web
三:使用Treesoft管理redis
四:總結算法
正文數據庫
一:準備apache
1.1:安裝單體redis編程
首先下載redis的安裝包,而後解壓、 編譯,依次執行如下指令:centos
[root@host /]# mkdir /usr/software/
[root@host software]# wget http://download.redis.io/releases/redis-4.0.6.tar.gz
[root@host software]# tar -xzvf redis-4.0.6.tar.gz
[root@host software]# cd redis-4.0.6/
[root@host redis-4.0.6]# make && install
簡單解釋一下以上命令,首先建立一個redis的目錄,而後下載redis4.0.6版本,再解壓,而後編譯安裝,安裝完以後的樣子大概以下:
redis默認是非守護模式,也就是沒法在後臺運行,咱們須要把其默認的屬性給修改了,依次執行如下命令:
[root@host redis-4.0.6]# vi /usr/software/redis-4.0.6/redis.conf no-->yes
上面的命令是用vi修改redis的配置文件中的守護模式,將其由關閉模式改成開啓,開啓之後咱們就能夠在後臺運行redis了
在後臺啓動運行redis
[root@host src]# ./redis-server ../redis.conf
成功啓動redis的會出現如下畫面:
而後咱們再以客戶端方式運行:redis-cli
能夠看到redis已經在運行了,而且咱們作了一個簡單的測試set一個name值,而後再get這個name值。能夠看到程序正常運行。
二:搭建redis集羣
2.1:複製配置文件到多個redis
以前有提到咱們的服務器資源有限,因此將採用的是一臺服務器安裝多個redis節點的方式。再具體到安裝過程,那就是採用多配置文件的方式,將每一個配置文件配置成不一樣的端口號和目錄等,而後依次啓動,使用redis-trib來管理這個集羣。
首先咱們須要先建立一個redis集羣文件夾,起名redis-cluster,而後準備6個節點,複製配置文件到這個文件夾裏面:
[root@host software]# mkdir redis-cluster [root@host redis-cluster]# mkdir 6001 [root@host redis-cluster]# mkdir 6002 [root@host redis-cluster]# mkdir 6003 [root@host redis-cluster]# mkdir 6004 [root@host redis-cluster]# mkdir 6005 [root@host redis-cluster]# mkdir 6006 [root@host redis-cluster]# cp /usr/software/redis-4.0.6/redis.conf /usr/software/redis-cluster/6001/ [root@host redis-cluster]# cp /usr/software/redis-4.0.6/redis.conf /usr/software/redis-cluster/6002/ [root@host redis-cluster]# cp /usr/software/redis-4.0.6/redis.conf /usr/software/redis-cluster/6003/ [root@host redis-cluster]# cp /usr/software/redis-4.0.6/redis.conf /usr/software/redis-cluster/6004/ [root@host redis-cluster]# cp /usr/software/redis-4.0.6/redis.conf /usr/software/redis-cluster/6005/ [root@host redis-cluster]# cp /usr/software/redis-4.0.6/redis.conf /usr/software/redis-cluster/6006/
以上命令是創建了6個節點,而後將單體的redis節點的配置文件複製到每一個節點中,接下來咱們就要用這些配置文件來配置集羣了
2.2:修改配置文件
如下是最小的Redis羣集配置文件,根據此咱們須要修改每一個配置文件中的這些屬性:
port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
依次執行命令,修改每一個配置文件
[root@host 6001]# vi redis.conf
①修改端口號,這裏和咱們配置的端口號保持一致:
②修改appendonly爲yes。這裏修改成yes的含義表示是開啓redis的aof持久化策略,開啓AOF持久化後每執行一條會更改Redis中的數據的命令,Redis就會將該命令寫入硬盤中的AOF文件。AOF文件的保存位置默認的文件名是appendonly.aof(備註說明:redis還有另一種持久化策略爲:rdb,至關於保存數據快照,能夠在配置文件中自定義同步更新時間!)
③開啓cluster-enabled 爲yes,即爲開啓集羣模式
④修改集羣節點爲當前配置文件的conf文件
⑤:修改超時時間爲5000ms,原來爲15000.
(用vi修改完記得用切記vi命令保存:wq!)
2.3:配置多個redis
按照2.2中給出的步驟,依次配置6個節點,注意節點、conf每一個配置的不一樣
2.4:安裝ruby
由於redis的集羣管理工具須要用到ruby,接下來咱們須要安裝ruby依賴庫:
這裏咱們不採用yum安裝,由於yum安裝的ruby默認版本號是1.9。而redis的集羣管理工具trib的最小ruby版本號要求是2.2.2.(版本低於2.2.2會沒法啓動)因此咱們採用手動的方式安裝ruby
依次執行一下命令
[root@host software]# mkdir ruby [root@host ruby]# wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz [root@host ruby]# tar xf ruby-2.2.2.tar.gz [root@host ruby-2.2.2]# cd ruby-2.2.2 [root@host ruby-2.2.2]#./configure --prefix=/usr/local/ruby-2.2.2 [root@host ruby-2.2.2]# make && make install
而後查看ruby版本號。若是出現的是2.2.2就表示成功了
2.5:安裝gem redis
[root@host ~]# yum install rubygems [root@host ruby]# gem install redis
2.6使用redis-trib啓動集羣
2.6.1 依次啓動redis節點
[root@host src]# cd /usr/software/redis-4.0.6/src [root@host src]# ./redis-server /usr/software/redis-cluster/6001/redis.conf [root@host src]# ./redis-server /usr/software/redis-cluster/6002/redis.conf [root@host src]# ./redis-server /usr/software/redis-cluster/6003/redis.conf [root@host src]# ./redis-server /usr/software/redis-cluster/6004/redis.conf [root@host src]# ./redis-server /usr/software/redis-cluster/6005/redis.conf [root@host src]# ./redis-server /usr/software/redis-cluster/6006/redis.conf
2.6.2:搭建redis集羣
[root@host src]# /usr/software/redis-4.0.6/src/redis-trib.rb create --replicas 1 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006
三:安裝TreeSoft界面化管理工具
3.1:測試redis集羣
首先咱們用redis客戶端啓動一個節點,能夠看出redis將值重定向到節點6002上面去了
[root@host src]# ./redis-cli -c -h 127.0.0.1 -p 6001
關於redis的集羣分片問題:
這段描述表示了redis的集羣是如何工做的,經過將節點進行劃分不一樣的hash槽來實現數據的存儲,每次當進行set值的時候,redis集羣會對鍵進行crc16的算法校驗,而後再取模,這樣能夠保證鍵能夠落在16384範圍中的某一個點上。而後再取不一樣的範圍,定位到具體的節點上,這種結構的伸縮興比較好,會避免刪除或者增長節點的時候致使集羣不可用。
3.2:安裝treeSoft
3.2.1:簡介 treesoft是redis的一個界面化管理工具,能夠經過它來查看redis的key和vlaue的集合,進行簡單配置就能夠,界面簡單操做方便,所以咱們來安裝一下treeSoft:
首先必須得安裝tomcat(7.0+)、jdk(1.7+),而後下載treesoft,下載地址:http://www.treesoft.cn/dms.html。
下載以後解壓,而後將treenms放入到tomcat到webapps目錄下,再啓動tomcat,個人目錄是:/usr/software/tomcat/apache-tomcat-7.0.92/webapps/treenms
就能夠運行了
注:由於篇幅緣由,本篇博客不介紹安裝tomcat、jdk的詳細教程,不會的同窗能夠自行google
3.2.2:treesoft管理
啓動tomcat,而後訪問treesoft
訪問地址:http://176.122.132.220:8070/treenms/treesoft/index,就能夠看到下面的界面了,而且能夠對鍵進行添加、刪除、修改工做、刷新等操做,很方便。只須要在右上角進行簡單的配置就能夠了
能夠看到界面乾淨清爽,能夠隨意切換集羣中的節點(600一、6002等)
四:總結
本篇博客講述了redis如何搭建集羣,以及redis集羣的基本運行原理,還有後來的使用treesoft進行管理集羣,redis是咱們在編程開發中不可或缺的一箇中間件,如何使用好它、管理好它、最大化它的性能都是咱們須要探索的問題。而這些的第一步就是咱們先親自手動去搭建這樣一個集羣,並瞭解它的基本運行機制,在之後的編程工做中,才能更高的發揮它的優勢。