免費(fèi)網(wǎng)站開發(fā)河南鄭州最新消息
一、復(fù)制SYNC與PSYNC
在Redis主從架構(gòu)中,主要有以下兩種情形需要進(jìn)行數(shù)據(jù)同步
(1)當(dāng)新的服務(wù)器執(zhí)行slave of 命令,成為主服務(wù)器的從服務(wù)器。這時候從服務(wù)器會向主服務(wù)器發(fā)送SYNC命令,請求全量同步數(shù)據(jù),主服務(wù)器會進(jìn)行以下操作
-
執(zhí)行BGSAVE命令,在后臺生成一個RDB文件,并使用一個緩沖區(qū)記錄從現(xiàn)在開始執(zhí)行的所有寫命令
-
主服務(wù)器將BGSAVE命令生成RDB文件發(fā)送給從服務(wù)器,從服務(wù)器接收并載入這個RDB文件
-
主服務(wù)器將記錄在緩沖區(qū)里面的所有寫命令發(fā)送給從服務(wù)器。從服務(wù)器執(zhí)行這些寫命令
(2)當(dāng)從服務(wù)器與主服務(wù)器斷開連接一段時間后恢復(fù),從服務(wù)器需要部分同步從斷開連接到重新連接期間主服務(wù)器寫入的數(shù)據(jù),這時候從服務(wù)器會向主服務(wù)器發(fā)送PSYNC命令
部分重同步功能由以下三個部分構(gòu)成 -
主服務(wù)器的復(fù)制偏移量和從服務(wù)器的復(fù)制偏移量
-
主服務(wù)器的復(fù)制積壓緩沖區(qū)
-
服務(wù)器的運(yùn)行ID
當(dāng)從服務(wù)器斷線重連,會比較自身的復(fù)制偏移量和主服務(wù)器的復(fù)制偏移量,并從復(fù)制積壓緩沖區(qū)取出gap數(shù)據(jù),同步給從服務(wù)器