您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關實現redis增量同步的的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1、增量同步的概念
增量同步就是當 master 服務器有數據更新的時候,會立刻同步到所有的 slave 服務器
當我們在 master 服務器增減數據的時候,就會觸發 replicationFeedSalves()函數,接下來在 Master 服務器上調用的每一個命令都會使用replicationFeedSlaves() 函數來同步到Slave服務器。當然,在執行此函數之前master 服務器會判斷用戶執行的命令是否有數據更新,如果有數據更新并且slave 服務器不為空,才會執行此函數,而此函數主要的工作就是把用戶執行的命令發送到所有的 slave服務器,讓 slave 服務器執行,這樣就可以實施同步功能了。
2、增量同步功能組成部分
1)主服務器的復制偏移量和從服務器的復制偏移量;
主服務器每次向從服務器傳播N個字節的數據時,就將自己的復制偏移量的值加N;
從服務器每次收到主服務器傳播來的N個字節的數據時,就將自己的復制偏移量的值加上N。
2)主服務器的復制積壓緩沖區;
由主服務器維護的一個固定長度隊列,默認為1M,當主服務器進行命令傳播時,它不僅會將寫命令發送給所有從服務器,還會將寫命令入隊到復制積壓緩沖區里面。
3)服務器的運行ID。
每個服務器在啟動時隨機生成運行ID(runid)。
3、增量同步實現
1)從服務器向主服務器發送PSYNC命令,攜帶主服務器的runid和復制偏移量;
2)主服務器驗證runid和自身runid是否一致,如不一致,則進行全量復制;
3)主服務器驗證復制偏移量是否在積壓緩沖區內,如不在,則進行全量復制;
4)如都驗證通過,則主服務器將保持在積壓區內的偏移量后的所有數據發送給從服務器,主從服務器再次回到一致狀態。
4、結論
1) 只有當從服務器的攜帶的主服務器runid和offset都符合,Redis才會采用增量同步的策略,存在著很大的局限性;
2) 因此從服務器重啟、更換主服務器、以及斷連時間過長,redis都會采用全量同步的策略。
關于實現redis增量同步的的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。