1. 程式人生 > >Redis配置RDB持久化機制

Redis配置RDB持久化機制

如何配置RDB持久化機制

(1) redis.conf檔案,也就是/etc/redis/6379.conf,去配置持久化
(2) save 60 1000  (每隔60s,如果有超過1000個key發生了變更,那麼就生成一個新的dump.rdb檔案,就是當前redis記憶體中完整的資料快照,這個操作也被稱之為snapshotting,快照
(3) 也可以手動呼叫save或者bgsave命令,同步或非同步執行rdb快照生成
(4) save可以設定多個,就是多個snapshotting檢查點,每到一個檢查點,就會去check一下,是否有指定的key數量發生了變更,如果有,就生成一個新的dump.rdb檔案)

在這裡插入圖片描述

RDB持久化機制的工作流程

(1)redis根據配置自己嘗試去生成rdb快照檔案
(2)fork一個子程序出來
(3)子程序嘗試將資料dump到臨時的rdb快照檔案中
(4)完成rdb快照檔案的生成之後,就替換之前的舊的快照檔案
dump.rdb,每次生成一個新的快照,都會覆蓋之前的老快照

基於RDB持久化機制的資料恢復實驗

(1)在redis中儲存幾條資料,立即停掉redis程序,然後重啟redis,看看剛才插入的資料還在不在
	資料還在,為什麼?
	通過redis-cli SHUTDOWN這種方式去停掉redis,其實是一種安全退出的模式,redis在退出的時候會將記憶體中的資料立即生成一份完整的rdb快照
	/var/redis/6379/dump.rdb
(2)在redis中再儲存幾條新的資料,用kill -9粗暴殺死redis程序,模擬redis故障異常退出,導致記憶體資料丟失的場景
	這次就發現,redis程序異常被殺掉,資料沒有進dump檔案,幾條最新的資料就丟失了
(3)手動設定一個save檢查點,save 5 1
(4)寫入幾條資料,等待5秒鐘,會發現自動進行了一次dump rdb快照,在dump.rdb中發現了資料
(5)異常停掉redis程序,再重新啟動redis,看剛才插入的資料還在

rdb的手動配置檢查點,以及rdb快照的生成,包括資料的丟失和恢復