1. 程式人生 > >mac環境下redis叢集的搭建

mac環境下redis叢集的搭建

一,為什麼要搭建redis叢集

    個人理解,redis是個記憶體資料庫,資料都存在記憶體中,既然存在記憶體中,那麼大小肯定受伺服器記憶體大小的限制。比如一個64G記憶體的伺服器,一個redis撐死也就能儲存64G的資料量,而對於大型網站架構,資料量豈止是64G,有的網站甚至儲存了上T的資料量,遇見這種情況,怎麼辦?

    在redis 3.0版本之前,通常是獲取key的hashcode,然後取模(mod),但是這種做法的缺點是無法很好的支援動態伸縮要求,一但有節點的增加或者刪除操作,都會導致key無法在redis上命中。redis 3.0版本之後開始支援叢集(cluster),採用的是雜湊槽(hash slot)。他可以把多個redis例項整合在一起,形成一個叢集。比如100G的資料量,一臺伺服器儲存不下,那我可以將它分散到多臺機器上,每個客戶端都連線一個redis服務例項,這是一個無中心結構,每個節點都儲存資料和整個叢集的狀態。每個節點也都知道其他節點所負責的槽。比如下面的例子:

我在叢集7001幾點set了一個key:“cluster7001” value : "test"

那麼我在叢集的7002節點訪問這個key:

可以看到,redis會指引你轉向至正確的節點(7001)和槽的位置(1391)

二,mac下redis叢集的搭建

    好,我們簡單介紹了一下redis叢集出現的背景,由於本片部落格重點在於搭建redis叢集,所以關於redis叢集的知識不做詳細的介紹,我們言歸正傳:

要想讓redis叢集工作,至少需要3個主節點,那我們在這裡要建立6個節點,三個主,三個從。對應的節點埠,我們定義為7001-7006

1、下載和安裝redis

    這裡不做詳細介紹,直接去官網下載最新版本的redis即可。

2、建立叢集目錄

    找到redis的安裝目錄,在裡面建立叢集資料夾

    sudo mkdir redis-cluster

    cd 到redis-cluster資料夾裡,建立六個節點資料夾:

    mkdir redis01

    mkdir redis02

    mkdir redis03

    mkdir redis04

    mkdir redis05

    mkdir redis06

3、修改配置檔案

    找到redis安裝目錄,vi redis.conf,需要修改下面資訊:

    port 7001 --埠

  daemonize yes --指定redis是否以後臺程序方式啟動

  cluster-eanbled yes --叢集開啟開關

  cluster-config-file nodes.conf --節點配置說明檔案,redis自己維護

  cluster-node-timeout 5000 --心跳測試反應時間,超過5s沒有反應認為該節點掛掉

  appendonly yes --Redis持久化第二種方式,AOF,預設開啟,預設每秒執行一次持久化儲存,也可以設定成實時保持,這個比save更安全。

  修改完這個配置檔案後,分辨拷貝到六個檔案節點資料夾中,redis01-06,同時修改對應埠7001-7006,然後將redis安裝包src路徑下的redis-server檔案分別拷貝到六個節點資料夾中。

此時,每個節點資料夾中都應該有紅框中的兩個檔案。

4、分別啟動redis6個例項

 開啟終端,分別執行以下命令:

 cd /usr/local/redis/redis-cluster/redis01/

 sudo redis-server redis.conf

 cd /usr/local/redis/redis-cluster/redis02/

 sudo redis-server redis.conf

  ......

  6個例項都啟動完畢,檢驗一下redis啟動情況:

 ps -ef|grep redis

 會看到6個例項都已啟動成功:

 

 但是現在只是分別啟動了6個單獨的redis例項,還不存在“群”的概念,我們要做的,是把這六個例項串聯起來,組成“群”

5、升級ruby安裝gem

    gem的安裝要求ruby的版本在1.8.7以上,先看一下本機的版本

   

    我的版本是2.0.0,複合要求。然後安裝:

    gem install redis

   

   出現上述情況,安裝成功。

6、建立redis叢集

    cd 到redis安裝目錄下的src路徑下,找到redis-trib.rb檔案,執行一下命令:

    ./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

   執行完後會看到

  至此,redis叢集搭建成功!我們來測試一下:

  cd到redis安裝目錄的src目錄,會看到redis-cli 這個檔案,然後執行:

  redis-cli -c -p 7001

  set test yeah

  然後會看到7001(主)7004(從)都有這個key,ok,測試通過!