從redis 3.0之後版本支持redis-cluster集羣,每個節點保存數據和整個集羣狀態,每個節點都和其他所有節點連接。其redis-cluster架構圖如下:
其結構特點:
redis集羣有一個投票容錯機制,判斷一個節點是不是掛了的評定標準是超過集羣總節點數一半數量認定該節點宕機,即該節點被認定掛了,節點與節點之間通過ping-pong的機制,說白了就是節點與節點是否能ping通,所以一個集羣至少要有三個節點,當一個掛掉,投票數就爲2/3,滿足要求,但是一個節點掛掉,redis集羣的槽就會缺失,導致整個集羣癱瘓,所以爲了實現高可用,每個節點還要有一個從節點,所以最小的redis集羣至少要六臺redis服務器。
Redis集羣預分好16384個槽位,每一個節點映射一定範圍的槽(大致平均),當需要在 Redis 集羣中放置一個 key-value 時,key被哈希函數映射到一個槽位, crc16(key) mod 16384的值,決定將目標值放到哪個槽中,做到了每一個節點的負載均衡。
1.1. Redis的安裝
Redis是c語言開發的。
安裝redis需要c語言的編譯環境。如果沒有gcc需要在線安裝。yum install gcc-c++
安裝步驟:
第一步:redis的源碼包上傳到linux系統。
第二步:解壓縮redis。
第三步:編譯。進入redis源碼目錄。make
第四步:安裝。make install PREFIX=/usr/local/redis
PREFIX參數指定redis的安裝目錄。一般軟件安裝到/usr目錄下
1.2. 連接redis
1.2.1. redis的啓動:
前端啓動:
在redis的安裝目錄下直接啓動redis-server
[root@localhost bin]# ./redis-server
後臺啓動:
把/root/redis-3.0.0/redis.conf複製到/usr/local/redis/bin目錄下
[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/bin/
修改配置文件:
daemonize yes#是否作爲守護進程運行
[root@localhost bin]# ./redis-server redis.conf
查看redis進程:
[root@localhost bin]# ps aux|grep redis
root 5190 0.1 0.3 33936 1712 ? Ssl 18:23 0:00 ./redis-server*:6379
root 5196 0.0 0.1 4356 728 pts/0 S+ 18:24 0:00 grep redis
1.2.2. Redis-cli
[root@localhost bin]# ./redis-cli
默認連接localhost運行在6379端口的redis服務。
[root@localhost bin]# ./redis-cli -h192.168.25.153 -p 6379
-h:連接的服務器的地址
-p:服務的端口號
關閉redis:[root@localhost bin]# ./redis-clishutdown
1.1. Redis集羣的搭建
Redis集羣中至少應該有三個節點。要保證集羣的高可用,需要每個節點有一個備份機。
Redis集羣至少需要6臺服務器。
搭建僞分佈式。可以使用一臺虛擬機運行6個redis實例。需要修改redis的端口號7001-7006
1.1.1. 集羣搭建環境
1、使用ruby腳本搭建集羣。需要ruby的運行環境。
安裝ruby
yum install ruby
yum install rubygems
2、安裝ruby腳本運行使用的包。
[root@localhost ~]# gem install redis-3.0.0.gem
Successfully installed redis-3.0.0
1 gem installed
Installing ri documentation forredis-3.0.0...
Installing RDoc documentation forredis-3.0.0...
[root@localhost ~]#
[root@localhost ~]# cd redis-3.0.0/src
[root@localhost src]# ll *.rb
-rwxrwxr-x. 1 root root 48141 Apr 1 2015redis-trib.rb
1.1.2. 搭建步驟
需要6臺redis服務器。搭建僞分佈式。
需要6個redis實例。
需要運行在不同的端口7001-7006
第一步:創建6個redis實例,每個實例運行在不同的端口。需要修改redis.conf配置文件。配置文件中還需要把cluster-enabled yes前的註釋去掉。第二步:啓動每個redis實例。(可寫批處理)
第三步:使用ruby腳本搭建集羣。
./redis-trib.rb create --replicas 1192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004192.168.25.153:7005 192.168.25.153:7006
1.1. 集羣的使用方法
Redis-cli連接集羣。
[root@localhost redis-cluster]#redis01/redis-cli -p 7002 -c
-c:代表連接的是redis集羣