引言: 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中涉及到。