PSYNC命令的調(diào)用方法有兩種:
如果從服務(wù)器以前沒有復(fù)制過任何主服務(wù)器,或者之前執(zhí)行過 SLAVEOF no one 命令,那么從服務(wù)器在開始一次新的復(fù)制時(shí)將向主服務(wù)器發(fā)送PSYNC ? -1 命令,主動請求主服務(wù)器進(jìn)行完整重同步(因?yàn)檫@時(shí)不可能執(zhí)行部分重同步);
相反地,如果從服務(wù)器已經(jīng)復(fù)制過某個(gè)主服務(wù)器,那么從服務(wù)器在開始一次新的復(fù)制時(shí)將向主服務(wù)器發(fā)送 PSYNC 《runid》 《offset》 命令:其中runid 是上一次復(fù)制的主服務(wù)器的運(yùn)行ID,而 offset則是從服務(wù)器當(dāng)前的復(fù)制偏移量,接收到這個(gè)命令的主服務(wù)器會通過這兩個(gè)參數(shù)來判斷應(yīng)該對從服務(wù)器執(zhí)行哪種同步操作。
根據(jù)情況,接收到PSYNC命令的主服務(wù)器會向從服務(wù)器返回以下三種回復(fù)的其中一種:
如果主服務(wù)器返回 +FULLRESYNC 《runid》 《offset》回復(fù),那么表示主服務(wù)器將與從服務(wù)器執(zhí)行完整重同步操作:其中runid是這個(gè)主服務(wù)器的運(yùn)行ID,從服務(wù)器會將這個(gè)ID保存起來,在下一次發(fā)送PSYNC命令時(shí)使用;而offset則是主服務(wù)器當(dāng)前的復(fù)制偏移量,從服務(wù)器會將這個(gè)值作為自己的初始化偏移量;
如果主服務(wù)器返回 +CONTINUE回復(fù),那么表示主服務(wù)器將與從服務(wù)器執(zhí)行部分重同步操作,從服務(wù)器只要等著主服務(wù)器將自己缺少的那部分?jǐn)?shù)據(jù)發(fā)送過來就可以了;
如果主服務(wù)器返回 -ERR 回復(fù),那么表示主服務(wù)器的版本低于 Redis
2.8,它識別不了PSYNC命令,從服務(wù)器將向主服務(wù)器發(fā)送SYNC命令,并與主服務(wù)器執(zhí)行完整同步操作。
這張圖看了理解起來保準(zhǔn)沒啥難度了!
上面我們詳細(xì)說明了redis主從同步時(shí),底層是如何決定使用全量同步或者部分同步的策略。下面看下整個(gè)增量同步和部分同步的過程:
Redis 的全量同步過程主要分三個(gè)階段:
同步快照階段: Master 創(chuàng)建并發(fā)送快照給 Slave , Slave 載入并解析快照。Master
同時(shí)將此階段所產(chǎn)生的新的寫命令存儲到緩沖區(qū)。
同步寫緩沖階段:Master 向 Slave 同步存儲在緩沖區(qū)的寫操作命令。
同步增量階段:Master 向 Slave 同步寫操作命令。
增量同步
Redis 增量同步主要指 Slave 完成初始化后開始正常工作時(shí), Master 發(fā)生的寫操作同步到 Slave 的過程。
通常情況下, Master 每執(zhí)行一個(gè)寫命令就會向 Slave 發(fā)送相同的寫命令,然后 Slave 接收并執(zhí)行。
-
服務(wù)器
+關(guān)注
關(guān)注
13文章
9693瀏覽量
87292 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3901瀏覽量
65777 -
同步
+關(guān)注
關(guān)注
0文章
89瀏覽量
19486 -
Redis
+關(guān)注
關(guān)注
0文章
385瀏覽量
11325
發(fā)布評論請先 登錄
labview調(diào)用DOS命令實(shí)現(xiàn)下面圖片的登錄方式(用戶:域名\用戶,密碼:密碼)
如何從VEE調(diào)用TCL命令?
通過CALL命令調(diào)用cmd腳本實(shí)現(xiàn)NVM讀取
單片機(jī)實(shí)現(xiàn)AT調(diào)試命令的方法
matlab自定義函數(shù)調(diào)用的方法
虛擬儀器調(diào)用MessageBox函數(shù)的實(shí)現(xiàn)
根據(jù)TR600芯片的過程調(diào)用設(shè)計(jì)與硬件實(shí)現(xiàn)

調(diào)用DLL實(shí)現(xiàn)LabVIEW數(shù)據(jù)采集

vb調(diào)用excel方法大全
透了解系統(tǒng)調(diào)用助你成為Linux下編程高手

super調(diào)用父類的構(gòu)造方法

LabVIEW命令行調(diào)用exe傳入的參數(shù)如何獲取

評論