redis中資料持久化(四)

來源:互聯網
上載者:User
redis中資料持久化介紹

目前會在兩種情況下使用

1. 作為資料庫使用;

2. 作為快取服務器使用。

redis的高效能很大程度上是因為其把資料存放區在記憶體中,然而當redis重啟時或者意外當機後,資料都會丟失。為了不讓redis中資料丟失,我們需要把記憶體中的資料以某種方式儲存的硬碟中,使得redis伺服器重啟後資料可以恢複,這一過程稱之為持久化

redis支援兩種方式的資料持久化,一是RDB方式;二是AOF方式。

RDB方式會根據指定的規則,“定時”將記憶體中的資料寫入硬碟中;

AOF方式每次執行命令會將命令本身記錄下來。

兩種方式都可以單獨使用,通常是兩者配合使用。下面分別對兩種方式介紹。


以下配置都是通過修改redis根目錄下的redis.conf檔案 一. RDB方式

RDB的方式是通過快照(snapshot)完成,當符合規則時redis會把記憶體的資料產生一個副本並儲存在硬碟中,這個過程稱之為“快照”。

redis會在以下幾種情況執行快照

1. 根據配置規則自動快照

2. 使用者執行save或bgsave命令

3. 執行flushall命令

4. 執行複製時。

下面對以上4中方式分別介紹

1.1 根據配置規則自動快照

使用者可以自訂快照條件,使用者可以在設定檔中自訂,格式如下:

save 時間 改動鍵的個數

save是關鍵字;時間是指在多長時間內,單位是秒;改動鍵的個數是指在指定時間內,被更改的個數大於我們指定的改動鍵個數時,自動執行快照。


如:

save 100 1

save 60 10

save 30 1000

命令允許存在多個,它們之間的關係式或者關聯。以上的命令意思是,每隔100秒,儲存一次;或者,60秒內,有10個以上索引值發生變化;或者,30秒內,有1000個索引值發生變化。當滿足以上3個條件任何之一,redis會自動快照。


1.2 使用者執行save或bgsave命令

當我們需要重啟redis服務、遷移redis服務、備份redis服務時,需要手動執行快照,這時可以使用save或者bgsave命令。

save:同步執行,這時會影響使用者請求,當redis資料比較大時,不建議使用此命令;

bgsave:後台非同步執行,不影響使用者對redis的請求。可以使用lastsave命令,查看最後快照時間。


1.3 執行flushall命令

執行flushall命令時,會清除redis中所有資料。當有任何一個自訂快照條件是,都會觸發快照操作;若沒有自訂任何快照規則,則不會觸發自訂快照。


1.4 執行複製時。

當redis服務配置了主從複製時,即使沒有配置任何自訂快照條件,沒有執行任何手動操作(執行save或者bgsave),也會執行快照。


redis預設會將快照檔案儲存體在目前的目錄下的dump.rdb檔案中,可以配置dir和dbfilename兩個參數分別之間檔案路徑和檔案名稱。

如:

dir c:\gyc

dbfilename dump.rdb


註:通過RDB方式持久化redis,一旦redis異常退出,那麼都會丟失最後一次快照後的所有更改的資料。如果不能接受丟失的這些資料,建議使用AOF方式持久化資料。 二. AOF(append only file)方式

當使用redis來儲存非臨時資料時,需要開啟AOF方式持久化。AOF將redis執行的每一條命令追加到磁碟中,這樣會降低redis的效能,不夠還是可以接受的。 2.1. 開啟AOF方式

預設情況redis沒有開啟AOF方式,可以通過appendonly命令來啟用,如:

appendonly yes

可以指定隱藏檔路徑,如:

dir c:\redis_aof

appendfilename appendonly.aof


2.2. 同步到磁碟中

雖然每次操作,redis都會把命令寫到AOF檔案中,但是由於作業系統緩衝機制,這時並沒有把所有資料真正寫到磁碟中,而是進入到硬碟緩衝。一般情況下,系統會每隔30秒做一次把硬碟緩衝中資料寫入磁碟中。

可以通過以下命令,執行:

# appendfsync always

# appendfsync no

appendfsync everysec


第一條命令是,每次執行寫入,都會執行同步,最安全也最慢;

第二條命令是,不主動執行同步,而是由系統自動執行,也就是30秒執行,不建議,有可能會丟失30秒的資料;

第三條命令是,每秒執行一次,redis預設執行此種;



redis支援同時開啟RDB和AOF,系統重啟後,redis會使用AOF來恢複資料。這樣丟失的資料會最少。

聯繫我們

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