首先普及一下什么是Redis,其實(shí)就是一個(gè)數(shù)據(jù)庫,只不過它是以Key-Value的數(shù)據(jù)形式存儲(chǔ)數(shù)據(jù)而已,多用來做為緩存高訪問量的數(shù)據(jù),通過主從讀寫分離、搭建集群使得高并發(fā)訪問環(huán)境下,系統(tǒng)有較好的穩(wěn)定性。下面是我搭建主從集群的方法,歡迎提意見。
一、Redis安裝:
1.下載Redis:
官方網(wǎng)站上下載redis-3.0.1,地址:
http://download.redis.io/releases/redis-3.0.1.tar.gz
2.解壓文件:
tar -zxvf redis-3.0.1.tar.gz
3.編譯安裝:
進(jìn)入目錄:cd redis-3.0.1
執(zhí)行命令:make
make install
注:執(zhí)行成功后會(huì)生成四個(gè)可執(zhí)行文件,文件存放的目錄在/usr/local/bin中,分別是:
redis-benchmark、redis-cli、redis-server、redis-stat
Redis運(yùn)行所需要的配置文件redis.conf,存放的目錄在/etc
4.運(yùn)行Redis:
執(zhí)行命令:/usr/local/bin/redis-server /etc/redis.conf
redis-cli ##進(jìn)入redis命令操作工具
set name yangzx ##存儲(chǔ)數(shù)據(jù)
get name ## 獲取對(duì)應(yīng)變量值
注:顯示界面如下,則配置成功:

二、主從配置
實(shí)驗(yàn)是在一臺(tái)虛擬機(jī)上設(shè)置的,因此使用了多個(gè)Redis實(shí)例,通過復(fù)制多份redis.conf可以生成多個(gè)不同的實(shí)例,與在多臺(tái)機(jī)器上配置是一致的。
1.復(fù)制配置文件redis.conf:
執(zhí)行命令:cp /etc/redis.conf /etc/redis6380.conf ##復(fù)制配置文件并重命名
sudo vi /etc/redis6380.conf ##打開配置文件,查看內(nèi)容并修改
修改內(nèi)容,將port修改為6380,配置Replication中slaveof為master的IP和PORT,具體如下:
port 6380
slaveof 127.0.0.1 6379


按照如上的步驟,配置第三個(gè)Redis實(shí)例,端口號(hào)為6381。
2.啟動(dòng)三個(gè)Redis實(shí)例:
執(zhí)行命令:/usr/local/bin/redis-server /etc/redis.conf
/usr/local/bin/redis-server /etc/redis6380.conf
/usr/local/bin/redis-server /etc/redis6381.conf
這樣就啟動(dòng)了端口號(hào)分別為6379,6380,6381三個(gè)Redis。
3.測(cè)試讀寫分離:
執(zhí)行命令:redis-cli -p 6379 ##進(jìn)入端口號(hào)為6379的Redis實(shí)例(master)
set name yangzx
get name
quit ##退出當(dāng)前Redis,可以使用快捷鍵ctrl+c直接退出
運(yùn)行界面如下:

執(zhí)行命令:redis-cli -p 6380 ##進(jìn)入端口號(hào)為6380的Redis實(shí)例(slaver)
get name ##測(cè)試是否能獲得master存儲(chǔ)的數(shù)據(jù)
set name yangzhenxiong ##測(cè)試是否能在slaver上進(jìn)行寫數(shù)據(jù)
運(yùn)行界面如下:

對(duì)于另一個(gè)slaver 6381,其運(yùn)行情況與6380一樣。
三、Redis-Sentinel配置
Redis-Sentinel可以監(jiān)控多個(gè)master-slave集群,發(fā)現(xiàn)master宕機(jī)后能進(jìn)行自動(dòng)切換。
1.配置sentinel文件:
在redis-3.0.1.tar.gz的解壓文件夾redis-3.0.1中有一個(gè)sentinel.conf文件,將其復(fù)制到/etc下,進(jìn)行配置。
執(zhí)行命令:cp /home/yzx/download/redis-3.0.1/sentinel.conf /etc
sudo vi /etc/sentinel.conf ##查看配置文件的內(nèi)容,需要修改的內(nèi)容不多
主要配置:sentinel monitor mymaster 127.0.0.1 6379 1 ,這里是配置master的信息,不需要配置slave的信息,通過監(jiān)測(cè)master就能獲得所有slave的信息了。
其余配置可以使用默認(rèn)配置,有:
sentinel down-after-milliseconds mymaster 60000 ##可以將時(shí)間設(shè)短點(diǎn),縮短實(shí)驗(yàn)時(shí)間
sentinel failover-timeout mymaster 180000
2.測(cè)試redis sentinel主從切換:
首先啟動(dòng)之前配置的三個(gè)Redis實(shí)例,端口號(hào)6379(master),6380(slave),6381(slave)
執(zhí)行命令:ps ax|grep redis ##查看redis的運(yùn)行情況
redis-cli -p 6379
info replication ##查看當(dāng)前master和slave的情況

redis-sentinel /etc/sentinel.conf --sentinel ##啟動(dòng)sentinel,必須重新打開新
##的終端運(yùn)行該命令

測(cè)試slave(6380)節(jié)點(diǎn)斷開后的情況,回到運(yùn)行Redis實(shí)例的終端:
執(zhí)行命令:redis-cli -p 6380 shutdown ##切換到sentinel終端進(jìn)行觀察

/usr/local/bin/redis-server /etc/redis6380.conf ##重新啟動(dòng),并觀察

測(cè)試master(6379)節(jié)點(diǎn)斷開后的情況:
執(zhí)行命令:redis-cli -p 6379 shutdown ##切換到sentinel終端進(jìn)行觀察

由于master宕機(jī),sentinel進(jìn)行了自我選舉,產(chǎn)生了新的master 6381。
執(zhí)行命令:redis-cli -p 6381
info replication ##查看主從集群狀態(tài)

可以觀察到目前集群的master是6381,只有一個(gè)slave 6380。我們?cè)俅螁?dòng)6379的Redis實(shí)例,看看效果如何:
執(zhí)行命令:/usr/local/bin/redis-server /etc/redis.conf ##重新啟動(dòng),并觀察

redis-cli -p 6381
info replication ##查看主從集群狀態(tài)

可以觀察到新增加6379變成了slave,其master是6381。
學(xué)者網(wǎng)

評(píng)論 0