Ubuntu16.04.1 安裝Redis-Cluster

Redis在3.0版正式引入了集羣這個特性。Redis集羣是一個分佈式(distributed)、容錯(fault-tolerant)的 Redis內存K/V服務, 集羣可使用的功能是普通單機 Redis 所能使用的功能的一個子集(subset),好比Redis集羣並不支持處理多個keys的命令,由於這須要在不一樣的節點間移動數據,從而達不到像Redis那樣的性能,在高負載的狀況下可能會致使不可預料的錯誤。html

Redis集羣的幾個重要特徵:node

(1).Redis 集羣的分片特徵在於將鍵空間分拆了16384個槽位,每個節點負責其中一些槽位。linux

(2).Redis提供必定程度的可用性,能夠在某個節點宕機或者不可達的狀況下繼續處理命令.redis

(3).Redis 集羣中不存在中心(central)節點或者代理(proxy)節點, 集羣的其中一個主要設計目標是達到線性可擴展性(linear scalability)。ruby

安裝Redis

經過官網http://redis.io/獲取穩定版源碼包下載地址;分佈式

$ wget http://download.redis.io/releases/redis-3.2.3.tar.gz
$ tar xzf redis-3.2.3.tar.gz
$ cd redis-3.2.3
$ make

注意:

1:可能新linux系統中未安裝gcc,經過以下命令安裝性能

apt-get install  build-essential

2:在make時可能出現錯誤error: jemalloc/jemalloc.h: No such file or directory",經過以下命令解決。ui

make MALLOC=libc 

安裝Redis-Cluster

首先安裝Redis-Cluster依賴庫

安裝Rubyspa

apt-get install ruby

安裝Redis.gemscala

gem intall redis

注意:本步驟須要翻/牆,能夠先下載到本地,而後再安裝,下載地址https://rubygems.org/gems/redis/versions/3.3.1

gem install /usr/downloads/redis-3.3.1.gem

建立Redis-Cluster,並分配Redis節點

按照端口號,依次建立對應文件夾,並配置redis.conf信息

啓動redis實例,查看redis進程

注意:若要讓集羣正常運做至少須要三個主節點,咱們的環境中,每一個主節點附帶一個從節點,因此一共六個節點。

經過redis-trib.rb建立redis集羣,命令以下

./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

注意:表示1個salve。redis-trib.rb在redis解壓目錄src中能夠找到。

若要讓集羣正常運做至少須要三個主節點,咱們的環境中,每一個主節點附帶一個從節點,因此一共六個節點。

 

建立結果以下圖,會提示Can I set the above configuration? (type 'yes' to accept):  

 

輸入yes ,而後出現以下圖 , [OK] All 16384 slots covered表示建立成功。

 

檢查集羣狀態,選中其中一個節點便可。

鏈接Redis集羣

注意:節點會對命令請求進行分析和key的slot計算,而且會查找這個命令所要處理的鍵所在的槽。若是要查找的哈希槽正好就由接收到命令的節點負責處理, 那麼節點就直接執行這個命令。另外一方面, 若是所查找的槽不是由該節點處理的話, 節點將查看自身內部所保存的哈希槽到節點 ID 的映射記錄, 並向客戶端回覆一個 MOVED 錯誤。

cluster集羣相關命令,更多redis相關命令見文檔:http://redis.readthedocs.org/en/latest/

集羣  
CLUSTER INFO 打印集羣的信息  
CLUSTER NODES 列出集羣當前已知的全部節點(node),以及這些節點的相關信息。  
節點  
CLUSTER MEET <ip> <port> 將 ip 和 port 所指定的節點添加到集羣當中,讓它成爲集羣的一份子。  
CLUSTER FORGET <node_id> 從集羣中移除 node_id 指定的節點。  
CLUSTER REPLICATE <node_id> 將當前節點設置爲 node_id 指定的節點的從節點。  
CLUSTER SAVECONFIG 將節點的配置文件保存到硬盤裏面。  
槽(slot)  
CLUSTER ADDSLOTS <slot> [slot ...] 將一個或多個槽(slot)指派(assign)給當前節點。  
CLUSTER DELSLOTS <slot> [slot ...] 移除一個或多個槽對當前節點的指派。  
CLUSTER FLUSHSLOTS 移除指派給當前節點的全部槽,讓當前節點變成一個沒有指派任何槽的節點。  
CLUSTER SETSLOT <slot> NODE <node_id> 將槽 slot 指派給 node_id 指定的節點,若是槽已經指派給另外一個節點,那麼先讓另外一個節點刪除該槽>,而後再進行指派。  
CLUSTER SETSLOT <slot> MIGRATING <node_id> 將本節點的槽 slot 遷移到 node_id 指定的節點中。  
CLUSTER SETSLOT <slot> IMPORTING <node_id> 從 node_id 指定的節點中導入槽 slot 到本節點。  
CLUSTER SETSLOT <slot> STABLE 取消對槽 slot 的導入(import)或者遷移(migrate)。  
鍵  
CLUSTER KEYSLOT <key> 計算鍵 key 應該被放置在哪一個槽上。  
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的鍵值對數量。  
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 個 slot 槽中的鍵。  

本文連接: 文章做者:雨~桐 文章出處:http://www.cnblogs.com/piscesLoveCc/ 若是您以爲閱讀本文對您有幫助,請點一右下角的「推薦」按鈕,您的「推薦」將是我最大的寫做動力!歡迎各位轉載,可是未經做者本人贊成,轉載文章以後必須在文章頁面明顯位置給出做者和原文鏈接,不然保留追究法律責任的權利。

相關文章
相關標籤/搜索