Redis持久化的兩種方式和配置

來源:互聯網
上載者:User

Redis優秀的效能是由於其將所有的資料都儲存在記憶體中,同樣memcached也是這樣做的,但是為什麼Redis能夠脫穎而出呢,很大程度上是因為Redis有出色的持久化機制,能夠保證伺服器重啟後,資料不會丟失。下面來看看Redis是如何持久化的。


Redis支援兩種方式的持久化,一種是RDB方式,一種是AOF方式。這兩種方式可以單獨使用其中一種,或者混合使用。 

RDB方式介紹

RDB方式是通過快照完成的,當符合一定條件時Redis會自動將記憶體中的所有資料進行快照,並且儲存到硬碟上。就像拍照一樣,將這一瞬間的所有東西都儲存下來。進行快照的條件在設定檔中指定。主要有兩個參數構成:時間和改動的索引值的個數,即當在指定時間內被更改的鍵的個數大於執行數值時,就會進行快照。RDB是Redis的預設持久化方式。 

RDB方式配置

找到Redis的設定檔:redis.conf

1) 設定觸發條件:

 

2) 設定rdb檔案路徑

預設rdb檔案存放路徑是目前的目錄,檔案名稱是:dump.rdb。可以在設定檔中修改路徑和檔案名稱,分別是dir和dbfilename

Redis啟動後會讀取RDB快照檔案,將資料從硬碟載入到記憶體,一般情況下1GB的快照檔案載入到記憶體的時間大約20-30分鐘。


RDB如何進行快照

RDB的快照過程:

1) Redis使用fork函數複製一份當前進程(父進程)的副本;

2) 父進程繼續接受並處理用戶端發來的命令,而子進程開始將記憶體中的資料寫入到硬碟中的臨時檔案;

3) 當子進程寫入完成所有資料後會用該臨時檔案替換舊的RDB檔案。

手動快照:

如果沒有觸發自動快照,可以對redis進行手動快照操作,SAVE和BGSAVE都可以執行手動快照,兩個命令的區別是前者是由主進程進行快照操作,會阻塞其他請求;而後者是通過fork子進程進行快照操作。

注意:

由於redis使用fork來複製一份當前進程,那麼子進程就會佔有和主進程一樣的記憶體資源,比如說主進程8G記憶體,那麼在備份的時候必須保證有16G記憶體,要不然會啟用虛擬記憶體,效能非常差。


RDB檔案的壓縮

RDB檔案過大時,是可以壓縮的,Redis預設開啟壓縮,當然也可以通過配置rdbcompression參數來禁用壓縮。

壓縮和不壓縮的優缺點:

壓縮:

優點:減少磁碟儲存空間缺點:消耗CPU資源
1 2 3

不壓縮:

優點:不消耗CPU資源缺點:佔用磁碟空間多
1 2 3

如何選擇。 那就需要看需求、看伺服器資源情況了。

相關文章

聯繫我們

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