Redis配置RDB持久化機制
阿新 • • 發佈:2018-12-04
如何配置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快照的生成,包括資料的丟失和恢復