redis的RDB持久化詳解

前言:

Redis 是內存數據庫,它將自己的數據庫狀態儲存在內存裏面,所以如果不想辦法將儲存在內存中的數據庫狀態保存到磁盤裏面,那麼一旦服務器進程退出,服務器中的數據庫狀態也會消失不見

爲了解決這個問題,Redis提供了RDB持久化功能,這個功能可以將Redis 在內存中的數據庫狀態保存到磁盤裏面,避免數據意外丟失。

概述:

RDB持久化: 默認 Redis 是會以快照 “RDB” 的形式將數據持久化到磁盤的,一個二進 制文件,dump.rdb

快照:直接把內存中的數據保存到一個 dump 文件中,定時保存,保存策略

redis的RDB持久化既可以手動執行,也可以根據服務器配置選項定期執行,該功能可以將某個時間點上的數據庫狀態保存到一個RDB文件中,也就是說在服務器開起時的目錄中會創建一個dump.rdb文件,當你創建表和數據之後,會在一定的時間後,自動保存到dump.rdb文件中,自動保存到磁盤中,也就是落盤。

這樣就解決了服務器突然出現宕機,或者意外退出引起數據丟失的問題

命令:

RDB系統默認是打開的,當Redis服務器啓動時,用戶可以通過指定配置文件或者傳人啓動參數的方式設置save選項,如果用戶沒有主動設置save選項,那麼服務器會爲save選項設置默認條件,當滿足以下三種的任意一個條件會自動生成dump.rdb文件;

save 900 1  //每900秒有1個KEY被修改
save 300 10  //每300秒有10個KEY被修改
save 60 10000  //每60秒有10000個KEY被修改

有兩種命令可以實現落盤,用於生成RDB文件

  1、SAVE命令會阻塞Redis服務器進程,直到RDB文件創建完畢爲止,在服務器進程阻塞期間,服務器不能處理任何命令請求

127.0.0.1:6379> SAVE  //等待直到RDB 文件創建完畢
OK

 2、shutdown 直接退出服務,會自動生成RDB文件,然後再次開啓時,會自動加載磁盤中的數

127.0.0.1:6379> shutdown  //關閉服務

 RDB持久化的優勢:

1、RDB是一個非常緊湊的文件,它保存了某個時間點得數據集,非常適用於數據集的備份。

2、RDB是一個緊湊的單一文件,很方便傳送到另一個遠端數據中心,非常適用於災難恢復.。

3、與AOF相比,在恢復大的數據集的時候,RDB方式會更快一些.。

RDB持久化的缺點:

           1、如果你希望在redis意外停止工作(例如電源中斷)的情況下丟失的數據最少的話,那麼RDB不適合你.雖然你可以配置不同的save時間點(例如每隔5分鐘並且對數據集有100個寫的操作),是Redis要完整的保存整個數據集是一個比較繁重的工作,你通常會每隔5分鐘或者更久做一次完整的保存, 在這種情況下, 一旦發生故障停機, 你就可能會丟失好幾分鐘的數據

            2、如果文件特別大,可能會導致客戶端提供服務暫停數毫秒或者幾秒。

總結:

          1、RDB存儲是默認的存儲方式,小數量,不在乎是否有併發,數據是否會丟失,安全性最好,佔用的空間也最小。

          2. 以上均爲個人觀點及工作學習中的總結。覺得還可以的話,麻煩給個關注評論,謝謝各位夥伴們啦!

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章