Redis-RDB持久化设置
1、如何配置RDB持久化機制
redis.conf文件,也就是/etc/redis/6379.conf,去配置持久化
save 60 1000
每隔60s,如果有超過1000個key發(fā)生了變更,那么就生成一個新的dump.rdb文件,就是當(dāng)前redis內(nèi)存中完整的數(shù)據(jù)快照,這個操作也被稱之為snapshotting,快照
也可以手動調(diào)用save或者bgsave命令,同步或異步執(zhí)行rdb快照生成
save可以設(shè)置多個,就是多個snapshotting檢查點,每到一個檢查點,就會去check一下,是否有指定的key數(shù)量發(fā)生了變更,如果有,就生成一個新的dump.rdb文件
2、RDB持久化機制的工作流程
(1)redis根據(jù)配置自己嘗試去生成rdb快照文件
(2)fork一個子進(jìn)程出來
(3)子進(jìn)程嘗試將數(shù)據(jù)dump到臨時的rdb快照文件中
(4)完成rdb快照文件的生成之后,就替換之前的舊的快照文件
dump.rdb,每次生成一個新的快照,都會覆蓋之前的老快照
3、基于RDB持久化機制的數(shù)據(jù)恢復(fù)實驗
(1)在redis中保存幾條數(shù)據(jù),立即停掉redis進(jìn)程,然后重啟redis,看看剛才插入的數(shù)據(jù)還在不在
數(shù)據(jù)還在,為什么?
帶出來一個知識點,通過redis-cli SHUTDOWN這種方式去停掉redis,其實是一種安全退出的模式,redis在退出的時候會將內(nèi)存中的數(shù)據(jù)立即生成一份完整的rdb快照
/var/redis/6379/dump.rdb
(2)在redis中再保存幾條新的數(shù)據(jù),用kill -9粗暴殺死redis進(jìn)程,模擬redis故障異常退出,導(dǎo)致內(nèi)存數(shù)據(jù)丟失的場景
這次就發(fā)現(xiàn),redis進(jìn)程異常被殺掉,數(shù)據(jù)沒有進(jìn)dump文件,幾條最新的數(shù)據(jù)就丟失了
(2)手動設(shè)置一個save檢查點,save 5 1
(3)寫入幾條數(shù)據(jù),等待5秒鐘,會發(fā)現(xiàn)自動進(jìn)行了一次dump rdb快照,在dump.rdb中發(fā)現(xiàn)了數(shù)據(jù)
(4)異常停掉redis進(jìn)程,再重新啟動redis,看剛才插入的數(shù)據(jù)還在
rdb的手動配置檢查點,以及rdb快照的生成,包括數(shù)據(jù)的丟失和恢復(fù),全都演示過了
---------------------
轉(zhuǎn)載于:https://www.cnblogs.com/ly570/p/10961736.html
總結(jié)
以上是生活随笔為你收集整理的Redis-RDB持久化设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记-JavaWeb学习之旅2
- 下一篇: linux cmake编译源码,linu