Redis持久化方式--RDB和AOF,各自的特點

RDB:

      RDB持久化是把當前進程數據生成快照保存到硬盤的過程,Redis 默認的方式。

  觸發機制:

      1)save命令: 阻塞當前Redis服務器, 直到RDB過程完成爲止。
                              對於內存比較大的實例會造成長時間阻塞, 線上環境不建議使用。
      2)bgsave命令: Redis進程執行fork操作創建子進程, RDB持久化過程由子進程負責, 完成後自動結束。
                                  阻塞只發生在fork階段, 一般時間很短。持久化過程,主線程還可以執行命令
      bgsave流程:

      3)自動觸發: redis.conf中配置:

save 900 1
save 300 10
save 60 10000
##900s 內更改一次,就儲存; 300s 內更改了 10 次就儲存

      其他自動觸發情況:
            主從複製時,全量複製操作時
            執行shutdown命令時,如果沒有開啓AOF持久化功能則自動執行bgsave
            執行debug reload命令重新加載Redis時, 也會自動觸發save操作
      二者區別

  RDB優缺點:

      優點:RDB是一個緊湊壓縮的二進制文件,壓縮後的文件遠遠小於內存大小。
                Redis加載RDB恢復數據遠遠快於AOF的方式。
      缺點:耗時、耗性能 - - bgsave每次運行都要執行fork操作創建子進程, 屬於重量級操作, 頻繁執行成本過高
                 RDB不適合實時持久化。

AOF:

      Redis持久化的主流方式,主要解決了數據持久化的實時性。
      AOF配置: 配置redis.conf

appendonly yes       //默認no,不開啓AOF
appendfilename       //aof文件名,
dir ./                         //aof文件目錄
appendfsync           //同步策略

      AOF工作流程:

          寫入緩衝區的原因:  保證寫入速度(如果直接追加到硬盤, 那麼性能完全取決於當前硬盤負載)

                                     Redis可以提供多種緩衝區同步硬盤的策略, 在性能和安全性方面做出平衡

     AOF緩衝區同步文件策略:
          always:    每次寫入緩衝區的命令都調用fsync操作同步到AOF文件。
          no:            不對AOF文件做fsync同步操作
          everysec:  Redis使用另一條線程每秒執行fsync同步操作,常用的同步硬盤的策略
     AOF重寫作用:
          減少磁盤佔用量、加速恢復速度

RDB與AOF:

參考:
     有空還是看《Redis開發與運維》第5章吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章