Redis主從復(fù)制
來(lái)自靈魂的拷問(wèn):什么是Redis主從復(fù)制?
簡(jiǎn)言之就是:
- 主對(duì)外從對(duì)內(nèi),主可寫(xiě)從不可寫(xiě)
- 主掛了,從不可為主
看下面的圖加深下理解:
對(duì),你沒(méi)看錯(cuò),Redis主從復(fù)制沒(méi)有動(dòng)態(tài)選舉Master節(jié)點(diǎn)的能力,主掛了服務(wù)就不可以寫(xiě)數(shù)據(jù)了。僅僅就是增強(qiáng)了應(yīng)用讀數(shù)據(jù)的并發(fā)量同時(shí)做數(shù)據(jù)備份。
一般生產(chǎn)環(huán)境會(huì)采用 哨兵 或者 Redis Cluster 這種具備Master自動(dòng)選舉的方案,我們學(xué)習(xí)時(shí)還是要掌握主從的原理后,再去更深一步,對(duì)于哨兵和Redis Cluster方案感興趣的話(huà),可以留言告訴我,咱們后面安排上。
主從如何配置
接下來(lái),我們實(shí)戰(zhàn)一下redis的主從架構(gòu)配置:
- 主redis無(wú)需任何配置
- 從機(jī)需要修改redis.conf文件中如下配置項(xiàng)
port 6378 # 如果是使用的一臺(tái)機(jī)器注意端口要與主機(jī)不同
# slaveof < masterip > < masterport >
# 表示當(dāng)前【從服務(wù)器】對(duì)應(yīng)的【主服務(wù)器】的IP是192.168.10.135,端口是6379。
slaveof 192.168.137.6 6379
臥槽,你是不是想問(wèn):這么簡(jiǎn)單么?沒(méi)錯(cuò)就是這么無(wú)情,但是這種事情一般代碼越少,事情越大,實(shí)現(xiàn)原理是啥呀?怎么就可以主從復(fù)制了呢?
別慌,七哥,帶大家好好縷一縷,整完去應(yīng)付面試絕對(duì)是沒(méi)有問(wèn)題的。
實(shí)現(xiàn)原理
Redis從2.8版本開(kāi)始,使用PSYNC命令代替SYNC命令來(lái)執(zhí)行復(fù)制時(shí)的同步操作。因此本文只講解目前采用PSYNC的同步原理。
PSYNC命令具有完整同步(full resynchronization) 和 部分同步 (partial resynchronization)兩種模式:
- 其中完整同步用于處理初次復(fù)制情況:完整重同步的執(zhí)行步驟是通過(guò)讓主服務(wù)器創(chuàng)建并發(fā)送RDB文件,以及向從服務(wù)器發(fā)送保存在緩沖區(qū)里面的寫(xiě)命令來(lái)進(jìn)行同步;
- 而部分同步則用于處理斷線(xiàn)后重復(fù)制情況:當(dāng)從服務(wù)器在斷線(xiàn)后重新連接主服務(wù)器時(shí),如果條件允許,主服務(wù)器可以將主從服務(wù)器連接斷開(kāi)期間執(zhí)行的寫(xiě)命令發(fā)送給從服務(wù)器,從服務(wù)器只要接收并執(zhí)行這些寫(xiě)命令,就可以將數(shù)據(jù)庫(kù)更新至主服務(wù)器當(dāng)前所處的狀態(tài)。
下圖展示了主從服務(wù)器在執(zhí)行部分重同步時(shí)的通信過(guò)程:
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7246瀏覽量
91183 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3904瀏覽量
65825 -
架構(gòu)
+關(guān)注
關(guān)注
1文章
528瀏覽量
25872 -
Redis
+關(guān)注
關(guān)注
0文章
385瀏覽量
11338
發(fā)布評(píng)論請(qǐng)先 登錄
Redis主從復(fù)制以及主從復(fù)制原理

詳解Redis主從復(fù)制和哨兵機(jī)制

一文深入Redis主從復(fù)制的原理詳解

談?wù)?b class='flag-5'>Redis怎樣配置實(shí)現(xiàn)主從復(fù)制?
Redis的主從、哨兵、Redis Cluster集群

聊聊RocketMQ的主從復(fù)制

mysql主從復(fù)制三種模式
mysql主從復(fù)制的原理
mysql主從復(fù)制 混合類(lèi)型的復(fù)制
redis查看主從節(jié)點(diǎn)命令
Redis使用重要的兩個(gè)機(jī)制:Reids持久化和主從復(fù)制

評(píng)論