溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Redis--主從復(fù)制原理

發(fā)布時間:2020-07-07 08:50:12 來源:網(wǎng)絡(luò) 閱讀:596 作者:朱飛東 欄目:關(guān)系型數(shù)據(jù)庫

前言:

MySQL主從復(fù)制的原因一樣,Redis雖然讀取寫入的速度都特別快,但是也會產(chǎn)生讀壓力特別大的情況。為了分擔(dān)讀壓力,Redis支持主從復(fù)制,Redis的主從結(jié)構(gòu)可以采用一主多從或者級聯(lián)結(jié)構(gòu),Redis主從復(fù)制可以根據(jù)是否是全量分為全量同步和增量同步。下圖為級聯(lián)結(jié)構(gòu)。
Redis--主從復(fù)制原理
 

1 全量同步

Redis全量復(fù)制一般發(fā)生在Slave初始化階段,這時Slave需要將Master上的所有數(shù)據(jù)都復(fù)制一份。具體步驟如下:

1)從服務(wù)器連接主服務(wù)器,發(fā)送SYNC命令;
2)主服務(wù)器接收到SYNC命名后,開始執(zhí)行BGSAVE命令生成RDB文件并使用緩沖區(qū)記錄此后執(zhí)行的所有寫命令;
3)主服務(wù)器BGSAVE執(zhí)行完后,向所有從服務(wù)器發(fā)送快照文件,并在發(fā)送期間繼續(xù)記錄被執(zhí)行的寫命令;
4)從服務(wù)器收到快照文件后丟棄所有舊數(shù)據(jù),載入收到的快照;
5)主服務(wù)器快照發(fā)送完畢后開始向從服務(wù)器發(fā)送緩沖區(qū)中的寫命令;
6)從服務(wù)器完成對快照的載入,開始接收命令請求,并執(zhí)行來自主服務(wù)器緩沖區(qū)的寫命令;

完成上面幾個步驟后就完成了從服務(wù)器數(shù)據(jù)初始化的所有操作,從服務(wù)器此時可以接收來自用戶的讀請求。
Redis--主從復(fù)制原理
 

2 增量同步

Redis增量復(fù)制是指Slave初始化后開始正常工作時主服務(wù)器發(fā)生的寫操作同步到從服務(wù)器的過程。
增量復(fù)制的過程主要是主服務(wù)器每執(zhí)行一個寫命令就會向從服務(wù)器發(fā)送相同的寫命令,從服務(wù)器接收并執(zhí)行收到的寫命令。
 

3 Redis主從同步策略

主從剛剛連接的時候,進行全量同步;全同步結(jié)束后,進行增量同步。當(dāng)然,如果有需要,slave 在任何時候都可以發(fā)起全量同步。redis 策略是,無論如何,首先會嘗試進行增量同步,如不成功,要求從機進行全量同步。

4 注意點

如果多個Slave斷線了,需要重啟的時候,因為只要Slave啟動,就會發(fā)送sync請求和主機全量同步,當(dāng)多個同時出現(xiàn)的時候,可能會導(dǎo)致Master IO劇增宕機。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI