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入門教學欄位學習!
以上是redis的增量同步如何實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!