您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Redis 中AOF和RDB的區別是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
Redis數據存儲模式有2種:cache-only和persistence。
如果想要Redis僅僅作為純內存的緩存來用,那么可以使用cache-only模式。對于persistence持久化存儲,Redis提供了兩種持久化方法:RDB以及AOF。通過RDB或AOF,都可以將Redis內存中的數據給持久化到磁盤上,然后可以將這些數據備份到別的地方去,比如云服務器。
RDB模式
Redis主進程fork一個子進程(?),讓子進程執行磁盤IO操作來進行持久化。RDB將數據寫入一個臨時文件,持久化結束后,用這個臨時文件替換上次持久化的文件,這些數據文件代表了某一個時刻中redis的數據。但是RDB是間隔一段時間進行持久化的,如果持久化之間redis發生故障,這一段時間內的數據就會丟失(RDB最大的缺點,導致不適合做第一優先的恢復方案,如果你依賴RDB做第一優先恢復方案,會導致丟失比較多的數據)。
為什么是子進程?
主要是出于Redis性能的考慮。
Redis RDB持久化機制會阻塞主進程,這樣主進程就無法響應客戶端請求。
Redis對客戶端響應請求的工作模型是單進程和單線程的,如果在主進程內啟動一個線程,這樣會造成對數據的競爭條件,為了避免使用鎖降低性能。基于以上兩點這就是為什么Redis通過啟動一個進程來執行RDB了。
AOF模式
可以簡單的認為AOF就是日志文件,此文件只會記錄“變更操作”(例如:set/del等),將“操作 + 數據”以格式化指令的方式append(追加,順序寫磁盤,沒有任何磁盤尋址的開銷,因此效率非常高)到操作日志文件的尾部(一般設置每秒一次),在append操作返回后(已經寫入到文件或者即將寫入),才進行實際的數據變更。“日志文件”保存了歷史所有的操作過程;當server需要數據恢復時,可以直接replay此日志文件,即可還原所有的操作過程。
但是AOF文件比RDB文件大,且恢復速度慢。
若AOF文件過大,可以使用BGREWRITEAOF命令(BGrewriteAOF),優化aof文件
上述就是小編為大家分享的Redis 中AOF和RDB的區別是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。