redis集群是乙個分布式、容錯的redis實現,它由多個redis節點組成,在多個redis節點之間進行資料共享。集群可以使用的功能是普通單機redis所能使用的功能的乙個子集,他提供了複製和故障轉移功能。
redis集群中不存在中心節點和**節點,而且不支援那些需要同時處理多個鍵的redis命令。
redis集群的設計目標是達到線性可擴充套件性。
redis集群為了保證資料的一致性,而犧牲一部分容錯性。
redis集群通過分割槽來提供一定程度的可用性,當集群中有部分節點失效或無法提供服務時,集群也可以繼續完成相關的命令請求。
redis集群實現了單機redis中所有處理單個資料庫鍵的命令,它不支援多資料庫功能。它預設使用0號資料庫,並且不能使用select命令。
使用集群的好處:
可以實現將資料自動切分到多個節點
當集群中有部分節點失效或者無法提供服務的時候,它依然可以繼續完成相關的命令請求
redis集群的使用可以解決高併發、大資料量的問題
乙個redis集群通常由多個節點(node)組成。在沒有搭建redis集群之前,每個節點都是相互獨立的,彼此之間沒有關係,每個節點都只包含在自己的集群中,只有將多個節點連線在一起,才能組建乙個可以工作的集群。
#連線各個獨立的節點
#將這條命令傳送個某個節點,就可讓該節點與ip和port所指定的節點進行握手。當握手成功時,就表示該節點已經進入集群中
cluster meet
在開啟集群模式的時候,伺服器會建立乙個 clusterstate型別的結構來儲存當前節點視角下的集群狀態。
在集群模式中,每個節點都會使用cluster.h/clusternode結構來儲存自己的當前狀態。
redis集群為了能夠存出大量的資料資訊,採用分片的方式將大量方式儲存在資料庫中,這個資料庫被劃分為16384個槽(slot)。槽是虛擬槽,槽是有一定的範圍,在redis中的範圍是0~16383,每個槽對映乙個大資料子集,一般比節點數大
redis自帶的集群搭建
三主三從集群
配置開啟節點
準備6個配置檔案(7000->7005)
配置檔案redis-cluster-7000.conf
port 7000
daemonize yes
dir "/home/redis/data"
logfile "cluster-7000.log"
dbfilename "dump-7000.rdb"
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-require-full-coverage no
配置檔案redis-cluster-7001.conf
port 7001
daemonize yes
dir "/home/redis/data"
logfile "cluster-7001.log"
dbfilename "dump-7001.rdb"
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-require-full-coverage no
配置檔案redis-cluster-7002.conf
port 7002
daemonize yes
dir "/home/redis/data"
logfile "cluster-7002.log"
dbfilename "dump-7002.rdb"
cluster-enabled yes
cluster-config-file nodes-7002.conf
cluster-require-full-coverage no
其它的三個配置檔案也是這樣配置。
啟動節點
redis-server redis-cluster-7000.conf
redis-server redis-cluster-7001.conf
redis-server redis-cluster-7002.conf
redis-server redis-cluster-7003.conf
redis-server redis-cluster-7004.conf
redis-server redis-cluster-7005.conf
#檢視集群資訊
redis-cli -p 7000 cluster info
redis集群中的節點的責任:
搭建集群
#分別建立7000與7002、7003、7004、7005節點的握手關係
redis-cli -p 7000 cluster meet 127.0.0.1 7002
redis-cli -p 7000 cluster meet 127.0.0.1 7003
redis-cli -p 7000 cluster meet 127.0.0.1 7004
redis-cli -p 7000 cluster meet 127.0.0.1 7005
#檢視節點之間的關係
redis-cli -p 7005 cluster nodes
建立指令碼檔案,來為指定節點指派槽
vim addsloat.sh
start=$1
end=$2
port=$3
for slot in 'seq $ $'
doecho "slot:$"
redis-cli -p $ cluster addslots $
done
#為7000節點指派0~5461範圍內的槽
sh addsloat.sh 0 5461 7000
#檢視集群和節點資訊
cluster info
#為7001節點指派5462~10922範圍內的槽
sh addsloat.sh 5462 10922 7001
#為7002節點指派10923~16383範圍內的槽
sh addsloat.sh 10923 16383 7002
主從分配
#檢視節點資訊
redis-cli -p 7000 cluster nodes
#分配主從關係
redis-cli -p 7003 cluster replicate node-id #node-id是節點資訊裡面的節點id
redis-cli -p 7004 cluster replicate node-id #node-id是節點資訊裡面的節點id
redis-cli -p 7005 cluster replicate node-id #node-id是節點資訊裡面的節點id
#檢視主從關係
redis-cli -p 7003 replicate
搭建redis集群
sudo apt get install git python python pip sudo pip install redis sudo pip install e git sudo pip install e git git clone ll binaries total 19m 173582...
redis集群搭建
redis集群搭建持久化保證了即使redis服務重啟不會丟失資料,因為redis服務重啟後會將硬碟上持久化的資料恢復到記憶體中,但是當redis伺服器的硬碟損壞了可能會導致資料丟失,如果通過redis的主從複製機制就可以避免這種單點故障。接下來開始redis集群的搭建。1 ruby環境2 建立集群 ...
redis集群搭建
redis集群部署文件 centos6系統 要讓集群正常工作至少需要3 個主節點,在這裡我們要建立6個 redis 節點,其中三個為主節點,三個為從節點,對應的 redis 節點的ip 和埠對應關係如下 127.0.0.1 7000 127.0.0.1 7001 127.0.0.1 7002 127...