關於redis持久化的介紹

  • redis持久化重要說明

    • redis數據存儲模式只有兩種
      • cache-only
        • 只做爲“緩存”服務,數據均在內存中,不持久化數據,服務停掉則數據全部丟失,且無恢復方法,高速但安全性低;
      • persistence
        • 數據不只是在內存中,還會以配置的持久化方式持久化到磁盤中,保證服務停止後數據還可以恢復。
        • 持久化方式選擇
          • Redis DataBase(簡稱RDB):默認開啓該種方法持久化數據
            • 在某個條件滿足後觸發持久化操作,也稱爲一次快照(snapshot)操作,將所有數據寫入一個臨時文件,持久化結束後,用這個臨時文件替換上次持久化的文件,達到數據恢復的效果。
            • snapshot觸發的時機,是有”間隔時間”和”變更次數”共同決定,同時符合2個條件纔會觸發snapshot,否則“變更次數”會被繼續累加到下一個“間隔時間”上。
            • snapshot過程是啓動一個獨立的子進程完成,故並不阻塞客戶端請求。snapshot首先將數據寫入臨時文件,當成功結束後,將臨時文件重名爲dump.rdb。
            • rdb優缺點說明
              • 優點
                • 文件緊湊
                • 形式簡單即單rdb文件
                • 由子進程完全獨立搞定對主進程無影響
                • 恢復速度快
              • 缺點
                • 每次保存都是保存一個完整數據集的操作,持續時間可長可短,對丟失數據控制力不佳。
                • 若數據量過大,造成CPU和IO壓力大,會影響主線程服務性能。
          • Append-only file (簡稱AOF)
            • 將”寫操作+數據”以格式化指令的方式追加到操作日誌文件的尾部,”日誌文件”保存了歷史所有的操作過程
            • 當server需要數據恢復時,可以直接replay此日誌文件,即可還原所有的操作過程。
            • 由於aof操作是發生在後臺異步線程執行,可以採用no文件模式同步(交給操作系統策略同步)、每秒鐘fsync同步一次、每個寫入發生時fsync同步一次,默認爲每秒同步一次。
            • aof也不是絕對無數據丟失的:aof是寫入內存cache,由後臺線程按照aof策略執行fsync,極端情況下依然會丟失相應的數據。
            • aof優缺點說明
              • 優點
                • 數據持久化更及時、效果更好
                • 尾部追加方式,且爲後臺線程執行,效果很好,亦不影響主線程服務性能。
                • 自動進行aof日誌重寫和替換,達到適時瘦身的效果。
                • 日誌文件爲文本形式,易讀易維護易修復。
              • 缺點
                • aof日誌文件體積一般比rdb方式要大。
                • 在數據恢復時,aof的恢復速度一般是慢於rdb。
    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章