Redis的AOF功能


引言:  Redis是基於內存的數據庫。同一時候也提供了若干持久化的方案。同意用戶把內存中的數據,寫入本地文件系統。以備下次重新啟動或者當機之后繼續使用。本文將描寫敘述怎樣基於Redis來設置AOF功能


什么是Redis的AOF?

AOF是AppendOnly File的縮寫,是Redis系統提供了一種記錄Redis操作的持久化方案。在AOF生成的文件里。將忠實記錄發生在Redis的操作,從而達到在Redisserver重新啟動或者當機之后,繼續恢復之前數據狀態的機制。


下面我們來簡要看看怎樣在Redis中使用AOF。並驗證整個過程:

A. Redis中基本的AOF設置

   appendonly yes  ---- 打開aof設置,同一時候將快照功能置於低優先級的位置

  appendfsync no
        當設置appendfsync為no的時候,Redis不會主動調用fsync去將AOF日志內容同步到磁盤。所以這一切就全然依賴於操作系統的調試了。對大多數Linux操作系統。是每30秒進行一次fsync,將緩沖區中的數據寫到磁盤上。


   appendfsync everysec
        當設置appendfsync為everysec的時候。Redis會默認每隔一秒進行一次fsync調用,將緩沖區中的數據寫到磁盤。

可是當這一次的fsync調用時長超過1秒時。Redis會採取延遲fsync的策略。再等一秒鍾。

也就是在兩秒后再進行fsync,這一次的fsync就無論會運行多 長時間都會進行。這時候因為在fsync時文件描寫敘述符會被堵塞,所以當前的寫操作就會堵塞。
        結論就是,在絕大多數情況下。Redis會每隔一秒進行一 次fsync。

在最壞的情況下,兩秒鍾會進行一次fsync操作。

這一操作在大多數數據庫系統中被稱為group commit。就是組合多次寫操作的數據,一次性將日志寫到磁盤。


   appendfsync always
        置appendfsync為always時,每一次寫操作都會調用一次fsync,這時數據是最安全的,當然。因為每次都會運行fsync。
所以其性能也會受到影響。

B. 啟動redis-server

   

C. 打開redis-cli,操作數據

   

D.  查看aof文件

  

從上面的圖示中,能夠發現,在AOF的文件里。它忠實記錄了發生在Redis上的操作,從而達到了還原數據的目的。當然,這個方式並非一種效率非常高的方式。基本的問題在於,有可能對於部分數據,進行了大量的操作。

在這樣的情況下就必須產生大量的冗余操作記錄。針對這個問題的解決的方法。我將在興許的blog中涉及到。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM