Redis 混合持久化


(一)Redis 4.0 混合持久化

  重啟Redis時,我們很少使用RDB來恢復內存狀態,因為會丟失大量數據。我們通常使用AOF日志重放。

  但是重放AOF日志性能相對RDB來說要慢很多,這樣在Redis實例很大的情況下,啟動需要花費很長的時間。

  Redis4.0 為了解決這個問題,帶來了一個新的持久化選項 --- 混合持久化。

  通過如下配置可以開啟混合持久化(必須先開啟AOF)

# aof‐use‐rdb‐preamble yes

  

  如果開啟了混合持久化,AOF在重寫時,不再是單純將內存數據轉換為RESP命令寫入AOF文件,而是將重寫這一刻之前的內存做RDB快照處理

  並且將RDB快照內容和增量的AOF修改內存數據的命令存在一起,都寫入新的AOF文件,新的文件一開始不叫appendonly.aof,等到重寫完新的AOF文件

  才會進行改名,覆蓋原有的AOF文件,完成新舊兩個AOF文件的替換。

  於是在Redis重啟的時候,可以先加載RDB的內容,然后再重放增量AOF日志就可以完全替代之前的AOF全量文件重放,因此重啟效率大幅得到提升

  

 

   

     Redis 數據備份策略

      1   寫crontab 定時調度腳本,每小時copy一份rdb或aof的備份到一個目錄中去,僅僅保留最近48小時的備份

    2   每天都保留一份當日的數據備份到一個目錄中去,可以保留最近一個月的備份

    3   每次copy備份的時候,都把太舊的備份給刪了

       4   每天晚上將當前機器上的備份復制一份到其他機器上,以防機器損壞

  


 

(二) 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

 

  主從復制流程圖:

  

 


 

 

     

    

 

        人生岔路口

        

              如何進行選擇

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM