Redis主從復(fù)制
來自靈魂的拷問:什么是Redis主從復(fù)制?
簡言之就是:
- 主對(duì)外從對(duì)內(nèi),主可寫從不可寫
- 主掛了,從不可為主
看下面的圖加深下理解:
對(duì),你沒看錯(cuò),Redis主從復(fù)制沒有動(dòng)態(tài)選舉Master節(jié)點(diǎn)的能力,主掛了服務(wù)就不可以寫數(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方案感興趣的話,可以留言告訴我,咱們后面安排上。
主從如何配置
接下來,我們實(shí)戰(zhàn)一下redis的主從架構(gòu)配置:
- 主redis無需任何配置
- 從機(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
臥槽,你是不是想問:這么簡單么?沒錯(cuò)就是這么無情,但是這種事情一般代碼越少,事情越大,實(shí)現(xiàn)原理是啥呀?怎么就可以主從復(fù)制了呢?
別慌,七哥,帶大家好好縷一縷,整完去應(yīng)付面試絕對(duì)是沒有問題的。
實(shí)現(xiàn)原理
Redis從2.8版本開始,使用PSYNC命令代替SYNC命令來執(zhí)行復(fù)制時(shí)的同步操作。因此本文只講解目前采用PSYNC的同步原理。
PSYNC命令具有完整同步(full resynchronization) 和 部分同步 (partial resynchronization)兩種模式:
- 其中完整同步用于處理初次復(fù)制情況:完整重同步的執(zhí)行步驟是通過讓主服務(wù)器創(chuàng)建并發(fā)送RDB文件,以及向從服務(wù)器發(fā)送保存在緩沖區(qū)里面的寫命令來進(jìn)行同步;
- 而部分同步則用于處理斷線后重復(fù)制情況:當(dāng)從服務(wù)器在斷線后重新連接主服務(wù)器時(shí),如果條件允許,主服務(wù)器可以將主從服務(wù)器連接斷開期間執(zhí)行的寫命令發(fā)送給從服務(wù)器,從服務(wù)器只要接收并執(zhí)行這些寫命令,就可以將數(shù)據(jù)庫更新至主服務(wù)器當(dāng)前所處的狀態(tài)。
下圖展示了主從服務(wù)器在執(zhí)行部分重同步時(shí)的通信過程:
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7254瀏覽量
91790 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3922瀏覽量
66156 -
架構(gòu)
+關(guān)注
關(guān)注
1文章
528瀏覽量
25967 -
Redis
+關(guān)注
關(guān)注
0文章
386瀏覽量
11428
發(fā)布評(píng)論請(qǐng)先 登錄
Redis主從復(fù)制以及主從復(fù)制原理

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

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

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

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

評(píng)論