Redis持久化機制

來源:互聯網
上載者:User

標籤:

Redis是一個支援持久化的記憶體資料庫,也就是說Redis需要經常將記憶體中的資料同步到硬碟來保證持久化.

Redis支援兩種持久化方式:

1. Snapshot(快照),也是預設;

這種方式是將記憶體中資料以快照的方式寫入二進位檔案中,預設的檔案名稱為dump.rdb.可以通過配置設定自動做快照持久化的方式.

save 900 1      #900秒內如果超過1個key被修改,則發起快照
save 300 10    #300秒內如果超過10個key被修改,則發起快照
save 60 10000    #60秒內如果超過10000個key被修改,則發起快照

 

我們可以看到,剛裝完Redis的時候沒有dump.rdb檔案,滿足快照要求後,系統會自動產生dump.rdb,且檔案類型為二進位檔案.

 

2.Append-only file(aof)方式;

由於快照方式是在一定間隔時間做一次的,所以如果Redis意外down掉的話,就會丟失最後一次快照後的所有修改.

aof比快照方式有更好的持久化性,是由於使用aof時,Redis會將每一個收到的命令都通過write函數追加到檔案中,當Redis重啟時會通過重新執行檔案中儲存的

寫命令來在記憶體中重建整個資料庫內容.

當然由於os會在核心中緩衝write做的修改,所以可能不是立即寫到磁碟上.這樣aof方式的持久化也是有可能丟失部分修改

可以通過設定檔告訴Redis我們想要通過fsync函數強制os寫入磁碟的時機.

appendfsync always        #收到命令立即寫入磁碟,效率最慢,但是保證完全的持久化

appendfsync everysec     #每秒鐘寫入磁碟一次,在效能和持久化方面做了很好的折中

appendfsync no          #完全依賴os,效能最好,持久化沒保證

我們來在shell看一下:

編輯Redis.conf檔案,修改appendonly no為appendonly yes

再次啟動Redis,增加一個key

我們可以看到系統自動產生了一個appendonly.aof檔案,且非二進位,我們用cat查看,其實裡面儲存的就是我們剛才新加的命令.

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.