Redis的持久化機制包括RBD和AOF兩種,對于這兩種持久化方式各有優勢,本文将對此進行介紹。
RDB機制的政策
RDB持久化是指在指定的時間間隔内将記憶體中的資料和操作通過快照的方式儲存到redis bin目錄下的一個預設名為 dump.rdb的檔案,可以通過配置設定自動的快照持久化的方式,我們可以配置redis在n秒内進行快照的時間,如果超過這個時間節點,将會自動執行快照操作。雖然這種方式友善快捷,但是無法保證資料的絕對安全可靠,如果伺服器在非備份時間跨度内發生了故障,無法做到對目前狀态的實時儲存,導緻資料丢失。而且每次儲存 RDB檔案時, Redis都需要 fork()出一個子程序,由子程序來執行具體的持久化工作,對資源消耗較大。
AOF機制的政策
redis 的 AOF 持久化是在每次接受到的指令通過 write函數追加到檔案中(預設是 appendonly.aof),但是由于作業系統在寫入檔案時使用了緩存來提高寫入效率,還是可能會出現因伺服器突然故障而導緻的資料丢失,故我們可以通過配置檔案告訴redis我們同步資料的時間間隔(預設間隔是每秒同步一次)
appendonly yes //啟用aof持久化方式
# appendfsync always //每次收到寫指令就立即強制寫入磁盤,最慢的,但是保證完全的持久化,不推薦使用
appendfsync everysec //每秒鐘強制寫入磁盤一次,在性能和持久化方面做了很好的折中,推薦
# appendfsync no //完全依賴os,性能最好,持久化沒保證