Redis进阶 - Redis主从工作原理详解
文章目錄
- 主從配置
- 主從工作原理
- 全量復制
- 增量復制
- 主從復制風暴
主從配置
簡要回顧一下,Redis的主從配置
主從工作原理
-
如果我們給master配置了一個slave,不管這個slave是否是第一次連接上Master,它都會發送一個PSYNC命令給master請求復制數據。
-
master收到PSYNC命令后,會在后臺進行數據持久化通過bgsave生成最新的rdb快照文件,持久化期間,master會繼續接收客戶端的請求,它會把這些可能修改數據集的請求緩存在內存中。
-
當持久化進行完畢以后,master會把這份rdb文件數據集發送給slave,slave會把接收到的數據進行持久化生成rdb,然后再加載到內存中。然后,master再將之前緩存在內存中的命令發送給slave。
-
當master與slave之間的連接由于某些原因而斷開時,slave能夠自動重連Master,如果master收到了多個slave并發連接請求,它只會進行一次持久化,而不是一個連接一次,然后再把這一份持久化的數據發送給多個并發連接的slave。
全量復制
增量復制
這個緩沖 默認1m , 在redis.conf中 對應 repl-backlog-size 1mb
從redis2.8版本開始,redis改用可以支持部分數據復制的命令PSYNC去master同步數據,slave與master能夠在網絡連接斷開重連后只進行部分數據復制(斷點續傳)。
master會在其內存中創建一個復制數據用的緩存隊列,緩存最近一段時間的數據,master和它所有的slave都維護了復制的數據下標offset和master的進程id,因此,當網絡連接斷開后,slave會請求master繼續進行未完成的復制,從所記錄的數據下標開始。
如果master進程id變化了,或者從節點數據下標offset太舊,已經不在master的緩存隊列里了,那么將會進行一次全量數據的復制。
主從復制風暴
如果有很多從節點,為了緩解主從復制風暴(多個從節點同時復制主節點導致主節點壓力過大),可以做如下架構,讓部分從節點與從節點(與主節點同步)同步數據,
總結
以上是生活随笔為你收集整理的Redis进阶 - Redis主从工作原理详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring5源码 - 14 如何在所有
- 下一篇: 小工匠聊架构 - 缓存与数据库【双写不一