Ubuntu16.04.1 安裝Redis-Cluster


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

Redis集群的幾個重要特征:

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

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

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

安裝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",通過如下命令解決。

make MALLOC=libc 

安裝Redis-Cluster

首先安裝Redis-Cluster依賴庫

安裝Ruby

apt-get install ruby

安裝Redis.gem

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/ 如果您覺得閱讀本文對您有幫助,請點一右下角的“推薦”按鈕,您的“推薦”將是我最大的寫作動力!歡迎各位轉載,但是未經作者本人同意,轉載文章之后必須在文章頁面明顯位置給出作者和原文連接,否則保留追究法律責任的權利。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM