redis中的RDB持久化詳解


1. 如何在redis中配置RDB持久化文件

 在redis持久化中  默認是開啟RDB模式的。這里我們只需要對RDB進行配置即可

 

在上面有三個配置選項 分別是    

每隔900秒  有一條key進行變更

每個300秒 有10條key進行變更

沒隔60秒  有10000條key進行變更。

以上任意條達成條件后,就會重新生成一個dump.rdb文件。就是當前redis內存中完整的快照,這個操作也被稱之為snapshotting,快照也可以手動調用save或者bgsave命令,同步或異步執行rdb快照生成

save可以設置為多個,也就是多個snapshotting檢查點,每到一個檢查點,就會去check一下,檢查是否有指定數量的key發生了變更,如果有那么就會生成一個新的dump.rdb文件。

 

 

2. RDB持久化是的工作流程

  (1).redis會根據自己的配置去嘗試rdb快照文件。

  (2) fork出一個子進程

  (3)子進程會將當前的dump文件快照到 rdb臨時文件當中。

  (4)完成rdb快照文件的生成之后,那么就會替換以前的老快照。

 

3、基於RDB持久化機制的數據恢復實驗數據還在,為什么?

我們在redis中存入幾條數據

 

在使用redis-cli SHUTDOWN  停掉redis 

 

這個時候我們進入到存放快照的目錄進行查看。

可以看到數據依舊是存在的。

 

帶出來一個知識點,通過redis-cli SHUTDOWN這種方式去停掉redis,其實是一種安全退出的模式,redis在退出的時候會將內存中的數據立即生成一份完整的rdb快照

/var/redis/6379/dump.rdb

 


(2)在redis中再保存幾條新的數據,用kill -9粗暴殺死redis進程,模擬redis故障異常退出,導致內存數據丟失的場景這次就發現,redis進程異常被殺掉,數據沒有進dump文件,幾條最新的數據就丟失了

 

使用 kill -9 的方式殺掉redis進程。

 

在進入到存放快照的文件目錄查看快照文件  並沒有進行生成。

(3) 我們這里在做一個實驗,重新對conf文件進行配置,配置成每五秒進行一次快照,在進行一次實驗

設置成 沒五秒有1個key進行變更那么就會生成新的dump.db文件

 

使用kill殺死進程過后  我們可以看到快照文件是生成了的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM