Redis集群搭建

2022-05-09 09:15:07 字數 3825 閱讀 6877

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...