Redis持久化
Redis是一個內存數據庫,為了保證數據的持久性,它提供了兩種持久化方案:
RDB 方式(默認)
RDB方式是通過快照( snapshotting )完成的,當符合一定條件時Redis會自動將內存中的數據進行快照并持久化到硬盤。
觸發快照的時機
- 符合自定義配置的快照規則 redis.conf
- 執行 save 或者 bgsave 命令
- 執行 flushall 命令
- 第一次執行主從復制操作
原理圖
設置快照保存規則
快照規則是配置在 redis.conf 文件中的,我這里我截取對應的代碼片段,給大家看下。
#
# Save the DB on disk:
#
# 持久化操作設置,下面的配置分別表示:900秒內至少一個鍵被修改則進行快照,5分鐘內至少10個鍵被修改則進行快照,1分鐘內10000個鍵被更改則進行快照
save 900 1
save 300 10
save 60 10000
注意事項:
- Redis在進行快照過程中不會修改RDB文件,只有快照結束后才會將舊的快照文件替換為新的,也就是說任何時候RDB文件都是完成的,不存在中間狀態,保證了數據的完整性。
- 我們可以通過定時備份RDB文件來實現Redis數據庫的備份,RDB文件是經過
壓縮的二進制文件
,占用空間會小于內存中的數據,更加利于傳輸。
RDB優缺點
缺點 :使用RDB方式進行持久化,如果看明白了其備份原理圖,則很容易看出 Redis如果異常宕機或者重啟 ,就會丟失最后一次快照之后的所有數據修改。這個時候我們就需要根據具體的應用場景,通過組合設置自動快照條件的方式來將可能發生的數據損失控制在能夠接受范圍。如果數據相對來說比較重要,希望將損失降到最小,則可以使用 AOF 方式進行持久化,下面我們會聊到這種方式。
優點: RDB最大化了Redis性能,父進程在保存快照生成RDB文件時唯一要做的就是fork出一個子進程,然后這個子進程就會處理接下來的所有文件保存工作,父進程無需執行任何磁盤 I/O 操作。同時這也是一個缺點,如果數據集比較大的時候,fork可能比較耗時,造成服務器在一段時間內會停止處理客戶端請求。
-
數據
+關注
關注
8文章
7170瀏覽量
89698 -
內存
+關注
關注
8文章
3064瀏覽量
74382 -
數據庫
+關注
關注
7文章
3852瀏覽量
64729 -
Redis
+關注
關注
0文章
379瀏覽量
10967
發布評論請先 登錄
相關推薦
評論