redis的增量同步如何實現

redis的增量同步如何實現

redis現有同步策略

1、增量同步功能組成部分 ? ? ? ?(推薦學習:Redis視頻教程

1)主服務器的復制偏移量和從服務器的復制偏移量;

?主服務器每次向從服務器傳播N個字節的數據時,就將自己的復制偏移量的值加N;

從服務器每次收到主服務器傳播來的N個字節的數據時,就將自己的復制偏移量的值加上N。

2)主服務器的復制積壓緩沖區;

由主服務器維護的一個固定長度隊列,默認為1M,當主服務器進行命令傳播時,它不僅會將寫命令發送給所有從服務器,還會將寫命令入隊到復制積壓緩沖區里面。

3)服務器的運行ID。

每個服務器在啟動時隨機生成運行ID(runid)。

2、增量同步實現

1)從服務器向主服務器發送PSYNC命令,攜帶主服務器的runid和復制偏移量;

2)主服務器驗證runid和自身runid是否一致,如不一致,則進行全量復制;

3)主服務器驗證復制偏移量是否在積壓緩沖區內,如不在,則進行全量復制;

4)如都驗證通過,則主服務器將保持在積壓區內的偏移量后的所有數據發送給從服務器,主從服務器再次回到一致狀態。

3、結論

1) 只有當從服務器的攜帶的主服務器runid和offset都符合,Redis才會采用增量同步的策略,存在著很大的局限性;

2) 因此從服務器重啟、更換主服務器、以及斷連時間過長,redis都會采用全量同步的策略。

更多Redis相關技術文章,請訪問Redis視頻教程欄目進行學習!

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享