一 什麼是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...