當前位置:編程學習大全網 - 源碼下載 - redis 主從同步-master端

redis 主從同步-master端

redis數據淘汰原理

redis過期數據刪除策略

redis server事件模型

redis cluster mget 引發的討論

redis 3.x windows 集群搭建

redis 命令執行過程

redis string底層數據結構

redis list底層數據結構

redis hash底層數據結構

redis set底層數據結構

redis zset底層數據結構

redis 客戶端管理

redis 主從同步-slave端

redis 主從同步-master端

redis 主從超時檢測

redis aof持久化

redis rdb持久化

redis 數據恢復過程

redis TTL實現原理

redis cluster集群建立

redis cluster集群選主

?redis 主從同步的過程始於壹系列類似tcp三次握手的過程,歸於"sync/psync"命令。分析redis主從同步master端的處理邏輯需要從syncCommand的函數開始進行分析。

?redis 主從同步過程中 master的執行內容 包括:

?整個處理邏輯主要分為處理 部分同步命令psync 全量同步命令sync ,整個交互過程如下

需要針對觸發bgsave命令的部分作下詳細說明,因為這個是核心的關鍵點:

?判斷能夠通過部分數據同步實現的邏輯很簡單,主要從兩個維度進行判斷:

?眾所周知rdb文件生成是內部fork新的線程去執行rdb生成過程的,通過rdbSaveBackground的函數可以看出來內部通過fork()去實現rdb文件的生成過程。

? 在fork的線程當中執行rdbSave實現rdb文件的生成過程。

? rdb文件的生成過程其實挺簡單的 ,大概流程如下:

?通過檢查server.rdb_child_pid或者server.aof_child_pid確認是否執行rdb文件生成或者aof文件寫入。

?bgsave完成後我們執行updateSlavesWaitingBgsave來實現rdb數據的同步。

? 在updateSlavesWaitingBgsave過程中我們把和slave連接的socket註冊寫事件到eventLoop當中且回調函數為sendBulkToSlave,通過該回調函數實現rdb文件的傳輸。

? 可以看出來整個同步過程中我們會同步master到所有的slave節點,註意是所有的slave節點。

? sendBulkToSlave內部主要實現兩個事情,都是和數據傳輸有關:

  • 上一篇:熊貓燒香是什麽病毒?
  • 下一篇:姓名愛情測試打分,姓名測試愛情緣分配對
  • copyright 2024編程學習大全網