Redis的AOF功能

來源:互聯網
上載者:User

引言:  Redis是基於記憶體的資料庫,同時也提供了若干持久化的方案,允許使用者把記憶體中的資料,寫入本地檔案系統,以備下次重啟或者當機之後繼續使用。本文將描述如何基於Redis來設定AOF功能


什麼是Redis的AOF?

AOF是AppendOnly File的縮寫,是Redis系統提供了一種記錄Redis操作的持久化方案,在AOF產生的檔案中,將忠實記錄發生在Redis的操作,從而達到在Redis伺服器重啟或者當機之後,繼續恢複之前資料狀態的機制。


以下我們來簡要看看如何在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中涉及到。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.