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文章
7335瀏覽量
94754 -
內存
+關注
關注
9文章
3209瀏覽量
76357 -
數據庫
+關注
關注
7文章
4019瀏覽量
68331 -
Redis
+關注
關注
0文章
392瀏覽量
12185
發布評論請先 登錄
相關推薦
熱點推薦
Redis持久化機制的實現原理和使用技巧
Redis將數據存儲在內存中,宕機或重啟都會使內存數據全部丟失, Redis的持久化機制用來保證數據不會因為故障而丟失。
redis持久化機制和如何實現持久化
Redis是一款高性能的非關系型數據庫,其持久化機制是保證數據在重啟后仍能夠保存的關鍵。Redis提供了兩種方式來實現
redis里數據什么時候持久化
Redis是一種開源的高性能、非關系型內存數據庫,它使用了鍵值對存儲數據,并且支持多種數據結構。 Redis提供了持久化機制,以確保在服務器重啟后數據不會丟失。
redis數據會自動清除嗎
Redis數據不會自動清除,但它提供了一些機制來管理數據的過期和淘汰。在默認情況下,Redis只會在內存中存儲數據,并且沒有自動清除機制。 Redis數據持久
Redis持久化RDB方式介紹
評論