一、簡介
單個(gè)redis的讀寫能力是有限的,并且存在不穩(wěn)定性。當(dāng)唯一的Redis服務(wù)宕機(jī)了,就沒有可用的Redis服務(wù)了,另外當(dāng)硬件出現(xiàn)問題,單機(jī)的數(shù)據(jù)便無法恢復(fù)。Redis集群的出現(xiàn)解決了單節(jié)點(diǎn)故障的問題,同時(shí)強(qiáng)化了Redis的讀寫能力(負(fù)載均衡)。

主從復(fù)制:指一臺(tái)Redis服務(wù)器的數(shù)據(jù)復(fù)制到其他的Redis服務(wù)器,前者為主節(jié)點(diǎn)(master),后者為從節(jié)點(diǎn)(slave)。數(shù)據(jù)的復(fù)制是單向的,只能由主節(jié)點(diǎn)到從節(jié)點(diǎn)。默認(rèn)情況下,每臺(tái)Redis服務(wù)器都是主節(jié)點(diǎn),一個(gè)主節(jié)點(diǎn)可以有0或者多個(gè)從節(jié)點(diǎn),但從節(jié)點(diǎn)只能有一個(gè)主節(jié)點(diǎn)。
主節(jié)點(diǎn)提供讀寫服務(wù),從節(jié)點(diǎn)提供讀服務(wù),多個(gè)從節(jié)點(diǎn)分擔(dān)讀負(fù)載,提高了redis的并發(fā)量。

二、搭集群建步驟
特別說明:window下6.2的安裝包在文章最后有獲取方式,大家如果需要,可以自行獲取,linux的直接去官網(wǎng)下載即可。(官網(wǎng)訪問地址:https://redis.io/download/#redis-downloads)
2.1、環(huán)境準(zhǔn)備
| IP | 端口 | 角色 |
| 127.0.0.1 | 7001 | Master |
| 127.0.0.1 | 7002 | slave |
| 127.0.0.1 | 7007 | slave |
2.2、創(chuàng)建目錄
進(jìn)入/tmp目錄cd /tmp# 創(chuàng)建目錄mkdir 7001 7002 7003
如圖:

2.3、配置文件修改
拷貝文件:
方式一:逐個(gè)拷貝cp redis-6.2.4/redis.conf 7001cp redis-6.2.4/redis.conf 7002cp redis-6.2.4/redis.conf 7003# 方式二:管道組合命令,一鍵拷貝echo 7001 7002 7003 | xargs -t -n 1 cp redis-6.2.4/redis.conf
修改參數(shù):
#修改每個(gè)文件夾內(nèi)的配置文件,#將端口分別修改為7001、7002、7003,將rdb文件保存位置都修改為# 自己所在目錄(在/tmp目錄執(zhí)行下列命令sed -i -e 's/6379/7001/g' -e 's/dir .//dir /tmp/7001//g' 7001/redis.confsed -i -e 's/6379/7002/g' -e 's/dir .//dir /tmp/7002//g' 7002/redis.confsed -i -e 's/6379/7003/g' -e 's/dir .//dir /tmp/7003//g' 7003/redis.conf# 修改每個(gè)實(shí)例的聲明IP# redis實(shí)例的聲明 IPreplica-announce-ip 127.0.0.1# 1、逐個(gè)修改sed -i '1a replica-announce-ip 127.0.0.1' 7001/redis.confsed -i ' 1a replica-announce-ip 127.0.0.1' 7002/redis.confsed -i '1a replica-announce-ip 127.0.0.1' 7003/redis.conf## 2、或者一鍵修改printf '%sn' 7001 7002 7003 | xargs -I{} -t sed -i '1a replica-announce-ip 127.0.0.1' {}/redis.conf# 開啟主從關(guān)系# 可以使用replicaof(5.0版本之后的)或者slaveof(5.0版本之前的)命令# slaveof/replicaof <masterip> <masterport># 若選擇7001為主機(jī),其他為從機(jī),則分別在7002和7003上配置replicaof 127.0.0.1 7001
啟動(dòng):
第1個(gè)redis-server 7001/redis.conf# 第2個(gè)redis-server 7002/redis.conf# 第3個(gè)redis-server 7003/redis.conf
查看集群狀態(tài):info replication

三、數(shù)據(jù)同步原理
3.1、全量同步

當(dāng)從節(jié)點(diǎn)(slave)啟動(dòng)成功并連接到主節(jié)點(diǎn)(master)后,會(huì)向主節(jié)點(diǎn)發(fā)送sync命令,請求數(shù)據(jù)同步。主節(jié)點(diǎn)接收到命令后會(huì)啟動(dòng)一個(gè)子進(jìn)程,將數(shù)據(jù)寫入數(shù)據(jù)文件中(RDB操作),待數(shù)據(jù)寫入完畢后,會(huì)將數(shù)據(jù)文件傳送給從節(jié)點(diǎn),從節(jié)點(diǎn)接收到文件后保存到磁盤上,并將數(shù)據(jù)加載到內(nèi)存中,完成一次全量復(fù)制。



3.2、增量同步

在完成一次全量復(fù)制后,如果主節(jié)點(diǎn)收到寫操作的命令時(shí),會(huì)以異步方式將命令復(fù)制給從節(jié)點(diǎn)(在全量復(fù)制期間,如果主節(jié)點(diǎn)接收到了新的寫操作命令,會(huì)先存入緩存,待從節(jié)點(diǎn)完成數(shù)據(jù)同步后,將新的寫操作命令復(fù)制給從節(jié)點(diǎn))。

四、總結(jié)

全量同步和增量同步的區(qū)別:

優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
1、實(shí)現(xiàn)了讀寫分離,緩解了主節(jié)點(diǎn)讀操作的壓力,提高了可用性,解決了單機(jī)故障問題;
2、主從復(fù)制期間主節(jié)點(diǎn)與從節(jié)點(diǎn)都是非阻塞的方式,仍然可用。
缺點(diǎn):
1、如果主節(jié)點(diǎn)發(fā)生宕機(jī),需要手動(dòng)切換主節(jié)點(diǎn);
2、如果RDB文件過大,同步過程比較耗時(shí)。
五、Redis的window版本獲取方式
更多優(yōu)秀文章,請關(guān)注個(gè)人微信公眾號(hào)或搜索“程序猿小楊”查閱。然后回復(fù):工具,可以獲取最新的window版本的Redis6.2的安裝包。







