0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PSYNC命令的實(shí)現(xiàn)調(diào)用方法

麥辣雞腿堡 ? 來源:七哥聊編程 ? 作者:七哥聊編程 ? 2023-10-09 15:22 ? 次閱讀

PSYNC命令的調(diào)用方法有兩種:

如果從服務(wù)器以前沒有復(fù)制過任何主服務(wù)器,或者之前執(zhí)行過 SLAVEOF no one 命令,那么從服務(wù)器在開始一次新的復(fù)制時(shí)將向主服務(wù)器發(fā)送PSYNC ? -1 命令,主動(dòng)請求主服務(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ù)器會(huì)通過這兩個(gè)參數(shù)來判斷應(yīng)該對(duì)從服務(wù)器執(zhí)行哪種同步操作。

根據(jù)情況,接收到PSYNC命令的主服務(wù)器會(huì)向從服務(wù)器返回以下三種回復(fù)的其中一種:

如果主服務(wù)器返回 +FULLRESYNC 《runid》 《offset》回復(fù),那么表示主服務(wù)器將與從服務(wù)器執(zhí)行完整重同步操作:其中runid是這個(gè)主服務(wù)器的運(yùn)行ID,從服務(wù)器會(huì)將這個(gè)ID保存起來,在下一次發(fā)送PSYNC命令時(shí)使用;而offset則是主服務(wù)器當(dāng)前的復(fù)制偏移量,從服務(wù)器會(huì)將這個(gè)值作為自己的初始化偏移量;

如果主服務(wù)器返回 +CONTINUE回復(fù),那么表示主服務(wù)器將與從服務(wù)器執(zhí)行部分重同步操作,從服務(wù)器只要等著主服務(wù)器將自己缺少的那部分?jǐn)?shù)據(jù)發(fā)送過來就可以了;

如果主服務(wù)器返回 -ERR 回復(fù),那么表示主服務(wù)器的版本低于 Redis
2.8,它識(shí)別不了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)生的新的寫命令存儲(chǔ)到緩沖區(qū)。

同步寫緩沖階段:Master 向 Slave 同步存儲(chǔ)在緩沖區(qū)的寫操作命令。

同步增量階段:Master 向 Slave 同步寫操作命令。

圖片

增量同步

Redis 增量同步主要指 Slave 完成初始化后開始正常工作時(shí), Master 發(fā)生的寫操作同步到 Slave 的過程。

通常情況下, Master 每執(zhí)行一個(gè)寫命令就會(huì)向 Slave 發(fā)送相同的寫命令,然后 Slave 接收并執(zhí)行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8958

    瀏覽量

    85085
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3752

    瀏覽量

    64233
  • 同步
    +關(guān)注

    關(guān)注

    0

    文章

    89

    瀏覽量

    19128
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    370

    瀏覽量

    10830
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    labview調(diào)用DOS命令實(shí)現(xiàn)下面圖片的登錄方式(用戶:域名\用戶,密碼:密碼)

    labview調(diào)用DOS命令實(shí)現(xiàn)下面圖片的登錄方式(用戶:域名\用戶,密碼:密碼)?labview調(diào)用DOS命令
    發(fā)表于 07-27 19:52

    如何從VEE調(diào)用TCL命令?

    嗨,有沒有人能夠找到一種如何從VEE調(diào)用TCL命令方法?是否有可以加載到VEE的.NET程序集TCL庫?謝謝。 以上來自于谷歌翻譯 以下為原文Hi,was anybody able
    發(fā)表于 04-02 16:57

    通過CALL命令調(diào)用cmd腳本實(shí)現(xiàn)NVM讀取

    和具體使用方法1.4 save命令詳解2. 通過CALL命令調(diào)用cmd腳本實(shí)現(xiàn)NVM讀取2.1 CMD
    發(fā)表于 11-04 07:52

    單片機(jī)實(shí)現(xiàn)AT調(diào)試命令方法

    用戶參數(shù)到接收緩沖區(qū),定義0x0d作為結(jié)束標(biāo)志2、調(diào)用命令類型解析回調(diào)函數(shù)AT_DeviceHandle,對(duì)命令消息進(jìn)行分流,然后進(jìn)入指令類型解析函數(shù)3、再指令解析函數(shù)里面對(duì)指令進(jìn)行分流,分別處理對(duì)應(yīng)的指令以及使用相關(guān)參數(shù)關(guān)鍵實(shí)現(xiàn)
    發(fā)表于 01-06 06:15

    matlab自定義函數(shù)調(diào)用方法

    matlab自定義函數(shù)調(diào)用方法 命令文件/函數(shù)文件+ 函數(shù)文件 - 多
    發(fā)表于 11-29 13:14 ?88次下載

    虛擬儀器調(diào)用MessageBox函數(shù)的實(shí)現(xiàn)

    虛擬儀器軟件設(shè)計(jì)中以圖形化語言LABVIEW為主,但在遇到LABVIEW不易實(shí)現(xiàn)的功能時(shí),可通過在LABVIEW中調(diào)用其他函數(shù)來實(shí)現(xiàn)。本文介紹了在LABVIEW中調(diào)用Win32 API
    發(fā)表于 09-14 15:07 ?23次下載

    根據(jù)TR600芯片的過程調(diào)用設(shè)計(jì)與硬件實(shí)現(xiàn)

    根據(jù)TR600芯片的過程調(diào)用設(shè)計(jì)與硬件實(shí)現(xiàn) 摘 要:介紹了TR600語音編解碼芯片中過程調(diào)用的設(shè)計(jì)及實(shí)現(xiàn)方法,并與堆棧寄存器結(jié)構(gòu)
    發(fā)表于 04-21 16:19 ?1176次閱讀
    根據(jù)TR600芯片的過程<b class='flag-5'>調(diào)用</b>設(shè)計(jì)與硬件<b class='flag-5'>實(shí)現(xiàn)</b>

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

    介紹了在LabVIEW 中調(diào)用外部程序代碼的方法。詳細(xì)探討了DLL 文件的調(diào)用方法,并通過實(shí)例介紹了基于非NI 公司的數(shù)據(jù)采集卡的數(shù)據(jù)采集的實(shí)現(xiàn)
    發(fā)表于 03-26 15:30 ?154次下載
    <b class='flag-5'>調(diào)用</b>DLL<b class='flag-5'>實(shí)現(xiàn)</b>LabVIEW數(shù)據(jù)采集

    vb調(diào)用excel方法大全

    電子發(fā)燒友網(wǎng)站提供《vb調(diào)用excel方法大全.docx》資料免費(fèi)下載
    發(fā)表于 04-14 10:27 ?6次下載

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

    Linux內(nèi)核中設(shè)置了一組用于實(shí)現(xiàn)各種系統(tǒng)功能的子程序,稱為系統(tǒng)調(diào)用。用戶可以通過系統(tǒng)調(diào)用命令在自己的應(yīng)用程序中調(diào)用它們。
    的頭像 發(fā)表于 05-11 11:27 ?3408次閱讀
    透了解系統(tǒng)<b class='flag-5'>調(diào)用</b>助你成為Linux下編程高手

    C調(diào)用matlab方法

    C調(diào)用matlab方法介紹
    發(fā)表于 07-31 10:55 ?0次下載

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

    我們分析這句話“父類對(duì)象的引用”,那說明我們使用的時(shí)候只能在子類中使用,既然是對(duì)象的引用,那么我們也可以用來調(diào)用成員屬性以及成員方法,當(dāng)然了,這里的 super 關(guān)鍵字還能夠調(diào)用父類的構(gòu)造方法
    的頭像 發(fā)表于 10-10 16:42 ?858次閱讀
    super<b class='flag-5'>調(diào)用</b>父類的構(gòu)造<b class='flag-5'>方法</b>

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

    有些場景下,我們用LabVIEW開發(fā)的應(yīng)用程序,需要通過命令行來調(diào)用,并向該應(yīng)用程序傳遞參數(shù),那么在程序中如何才能獲取這些參數(shù)呢?
    發(fā)表于 10-11 09:28 ?2245次閱讀
    LabVIEW<b class='flag-5'>命令</b>行<b class='flag-5'>調(diào)用</b>exe傳入的參數(shù)如何獲取

    shell并行調(diào)用腳本

    在Shell腳本中,可以使用一些技巧來實(shí)現(xiàn)并行調(diào)用。以下是幾種常見的方法: 使用后臺(tái)進(jìn)程:在Shell腳本中,可以使用"command2 上述腳本中,每個(gè)命令都在末尾添加了"&"符號(hào),
    的頭像 發(fā)表于 11-08 10:23 ?901次閱讀

    python調(diào)用windows命令

    Python是一種強(qiáng)大的編程語言,可以用于開發(fā)各種不同類型的應(yīng)用程序。其中一個(gè)常見的用途是使用Python調(diào)用Windows命令來執(zhí)行特定的任務(wù)。在本文中,我們將詳細(xì)討論如何使用Python調(diào)用
    的頭像 發(fā)表于 11-29 14:34 ?965次閱讀