Redis集群搭建

2021-10-02 17:09:56 字數 3196 閱讀 4587

一 什麼是redis-cluster

為何要搭建redis集群。redis是在記憶體中儲存資料的,而我們的電腦一般記憶體都不大,這也就意味著redis不適合儲存大資料,適合儲存大資料的是hadoop生態系統的hbase或者是mogodb。redis更適合處理高併發,一台裝置的儲存能力是很有限的,但是多台裝置協同合作,就可以讓記憶體增大很多倍,這就需要用到集群。

redis集群搭建的方式有多種,例如使用客戶端分片、twemproxy、codis等,但從redis 3.0之後版本支援redis-cluster集群,它是redis官方提出的解決方案,redis-cluster採用無中心結構,每個節點儲存資料和整個集群狀態,每個節點都和其他所有節點連線。客戶端與 redis 節點直連,不需要中間 proxy 層.客戶端不需要連線集群所有節點連線集群中任何乙個可用節點即可。所有的 redis 節點彼此互聯(ping-pong 機制),內部使用二進位制協議優化傳輸速度和頻寬.

二 分布儲存機制-槽

(1)redis-cluster 把所有的物理節點對映到[0-16383]slot 上,cluster 負責維護

node<->slot<->value

(2)redis 集群中內建了 16384 個雜湊槽,當需要在 redis 集群中放置乙個 key-value時,redis先對key使用crc16演算法算出乙個結果,然後把結果對 16384 求餘數,           這樣每個key 都會對應乙個編號在 0-16383 之間的雜湊槽,redis 會根據節點數量大致均等的將雜湊槽對映到不同的節點。

例如三個節點:槽分布的值如下:

server1:  0-5460

server2:  5461-10922

server3:  10923-16383

三 搭建redis-cluster

1 搭建要求

需要 6 臺 redis 伺服器。搭建偽集群。

需要 6 個 redis 例項。

需要執行在不同的埠 7001-7006

2 準備工作

(1)修改每個redis節點的配置檔案redis.conf

修改執行埠為7001 (7002 7003 .....)

將cluster-enabled yes 前的注釋去掉(632行)

(2)啟動每個redis例項

以第乙個例項為例,命令如下

cd /usr/local/redis-cluster/redis-1/bin/

./redis-server redis.conf

把其餘的5個也啟動起來,然後檢視一下是不是都啟動起來了

[root@localhost ~]# ps -ef | grep redis

root     15776 15775  0 08:19 pts/1    00:00:00 ./redis-server *:7001 [cluster]

root     15810 15784  0 08:22 pts/2    00:00:00 ./redis-server *:7002 [cluster]

root     15831 15813  0 08:23 pts/3    00:00:00 ./redis-server *:7003 [cluster]

root     15852 15834  0 08:23 pts/4    00:00:00 ./redis-server *:7004 [cluster]

root     15872 15856  0 08:24 pts/5    00:00:00 ./redis-server *:7005 [cluster]

root     15891 15875  0 08:24 pts/6    00:00:00 ./redis-server *:7006 [cluster]

root     15926 15895  0 08:24 pts/7    00:00:00 grep redis

(3)上傳redis-3.0.0.gem ,安裝 ruby用於搭建redis集群的指令碼。

[root@localhost ~]# gem install redis-3.0.0.gem

successfully installed redis-3.0.0

1 gem installed

installing ri documentation for redis-3.0.0...

installing rdoc documentation for redis-3.0.0...

(4)使用 ruby 指令碼搭建集群。

進入redis原始碼目錄中的src目錄  執行下面的命令

./redis-trib.rb create --replicas 1 192.168.25.140:7001 192.168.25.140:7002 192.168.25.140:7003

192.168.25.140:7004 192.168.25.140:7005 192.168.25.140:7006

出現下列提示資訊

>>> creating cluster

connecting to node 192.168.25.140:7001: ok

connecting to node 192.168.25.140:7002: ok

connecting to node 192.168.25.140:7003: ok

connecting to node 192.168.25.140:7004: ok

connecting to node 192.168.25.140:7005: ok

connecting to node 192.168.25.140:7006: ok

>>> performing hash slots allocation on 6 nodes...

using 3 masters:

192.168.25.140:7001

192.168.25.140:7002

192.168.25.140:7003

adding replica 192.168.25.140:7004 to 192.168.25.140:7001

adding replica 192.168.25.140:7005 to 192.168.25.140:7002

adding replica 192.168.25.140:7006 to 192.168.25.140:7003

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