Redis學習(三)之持久化

RDB快照

觸發機制:

  • save同步會阻塞
  • bsave異步,fork主線程的子線程,中間生成臨時rdb文件最後生成正式的rdb文件
  • 自動

 最佳配置

dbfilename dump-${port}.rdb

dir /bigdiskpath

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

其它觸發方式:全量複製,debug reload ,shutdown

AOF(append only file)

以獨立日誌的方式記錄每次命令,重啓時再重新執行AOF文件中的命令達到恢復數據的目的。AOF持久化開啓且存在AOF文件時,優先加載AOF文件。

開啓AOF功能需要設置配置

appendonly yes,默認不開啓。AOF文件名通過appendfilename配置設置,默認文件名是appendonly.aof。保存路徑同RDB持久化方式一致,通過dir配置指定。AOF的工作流程操作:命令寫入(append)、文件同步(sync)、文件重寫(rewrite)、重啓加載(load)。

AOF爲什麼把命令追加到sof_buf中?

Redis使用單線程響應命令,如果每次寫AOF文件命令都直接追加到硬盤,那麼性能完全取決於當前硬盤負載。先寫入緩衝區aof_buf中,還有另一個好處,Reids可以提供多種緩衝區同步硬盤的策略,在性能和安全性方面做出平衡。

文件同步

appendfsync always     #每次有數據修改發生時都會寫入AOF文件。

appendfsync everysec  #每秒鐘同步一次,該策略爲AOF的缺省策略。

appendfsync no          #從不同步。高效但是數據不會被持久化。由操作系統決定

重寫機制

AOF文件重寫是把Redis進程內的當前數據轉化爲寫命令同步到新AOF文件的過程。優化過時的,無效的,重複的命令。

AOF重寫過程可以手動觸發和自動觸發:

  • 手動觸發:直接調用bgrewriteaof命令。

  • 自動觸發:根據auto-aof-rewrite-min-size和auto-aof-rewrite-percentage參數確定自動觸發時機。

    • auto-aof-rewrite-min-size:表示運行AOF重寫時文件最小體積,默認爲64MB。

    • auto-aof-rewrite-percentage:代表當前AOF文件空間(aof_current_size)和上一次重寫後AOF文件空間(aof_base_size)的比值。

自動觸發機制 = aof_current_size > auto-aof-rewrite-min-size && (aof_current_size - aof_base_size) / aof_base_size >= auto-aof-rewrite=percentage


RDB與AOF的對比

 

 

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