關於redis的持久化策略

來源:互聯網
上載者:User

標籤:color   而且   動作記錄   redis主從   基於   持久化   運行時   同步   檔案的   

Redis的持久化

Redis雖然是基於記憶體的儲存系統,但是它本身是支援記憶體資料的持久化的,而且提供兩種主要的持久化策略:RDB快照和AOF日誌。

Redis的RDB快照

Redis支援將當前資料的快照存成一個資料檔案的持久化機制,即RDB快照。這種方法是非常好理解的,但是一個持續寫入的資料庫如何產生快照呢?Redis藉助了fork命令的copy on write機制。在產生快照時,將當前進程fork出一個子進程,然後在子進程中迴圈所有的資料,將資料寫成為RDB檔案。

我們可以通過Redis的save指令來配置RDB快照產生的時機,比如你可以配置當10分鐘以內有100次寫入就產生快照,也可以配置當1小時內有1000次寫入就產生快照,也可以多個規則一起實施。這些規則的定義就在Redis的設定檔中,你也可以通過Redis的CONFIG SET命令在Redis運行時設定規則,不需要重啟Redis。

Redis的RDB檔案不會壞掉,因為其寫操作是在一個新進程中進行的,當產生一個新的RDB檔案時,Redis產生的子進程會先將資料寫到一個臨時檔案中,然後通過原子性rename系統調用將臨時檔案重新命名為RDB檔案,這樣在任何時候出現故障,Redis的RDB檔案都總是可用的。同時,Redis的RDB檔案也是Redis主從同步內部實現中的一環。

Redis的AOF日誌

AOF日誌的全稱是append only file,從名字上我們就能看出來,它是一個追加寫入的記錄檔。

AOF是一個寫檔案操作,其目的是將動作記錄寫到磁碟上,所以它也同樣會遇到我們上面說的寫操作的5個流程。那麼寫AOF的操作安全性又有多高呢。實際上這是可以設定的,在Redis中對AOF調用write(2)寫入後,何時再調用fsync將其寫到磁碟上,通過appendfsync選項來控制,下面appendfsync的三個設定項,安全強度逐漸層強。

1)appendfsync no

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

2)appendfsync everysec

當設定appendfsync為everysec的時候,Redis會預設每隔一秒進行一次fsync調用,將緩衝區中的資料寫到磁碟。但是當這一次的fsync調用時間長度超過1秒時。Redis會採取延遲fsync的策略,再等一秒鐘。也就是在兩秒後再進行fsync,這一次的fsync就不管會執行多長時間都會進行。這時候由於在fsync時檔案描述符會被阻塞,所以當前的寫操作就會阻塞。所以結論就是,在絕大多數情況下,Redis會每隔一秒進行一次fsync。在最壞的情況下,兩秒鐘會進行一次fsync操作。這一操作在大多數資料庫系統中被稱為group commit,就是組合多次寫操作的資料,一次性將日誌寫到磁碟。

3)appednfsync always

當設定appendfsync為always時,每一次寫操作都會調用一次fsync,這時資料是最安全的,當然,由於每次都會執行fsync,所以其效能也會受到影響。

關於redis的持久化策略

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.