Redis入門到精通(十一)——Redis持久化(RDB/AOF)、RDB的啟動方式(save/bgsave/save配置)、RDB三種啟動方式對比


什么是持久化

利用永久性存儲介質將數據進行保存,在特定的時間將保存的數據進行恢復的工作機制稱為持久化

為什么要進行持久化

防止數據的意外丟失,確保數據安全性

持久化過程保存什么

1.將當前數據狀態進行保存,快照形式,存儲數據結果,存儲格式簡單,關注點在數據              RDB 2.將數據的操作過程進行保存,日志形式,存儲操作過程,存儲格式復雜,關注點在數據的操作過程    AOF

一、RDB啟動方式——save指令

命令執行
誰:redis操作者(用戶)
什么時間:即時(隨時進行)
干什么事:保存數據

命令

save #客戶端設置完key/value之后輸入save保存

作用

手動執行一次保存一次數據

執行持久化命令之后在日志存放地址發現dump.rab文件,執行save命令保存數據的文件,保存當前的快照信息。

二、RDB啟動方式——save指令相關配置

在配置文件中修改以下參數

 

 

三、數據恢復過程演示

就是在啟動的時候將數據加載過來的

四、RDB啟動方式——bgsave指令

Redis是單線程任務執行序列,如果執行save命令時間過長會阻塞當前Redis服務器,直到當前RDB過程完成為止,有可能會造成長時間阻塞,線上環境不建議使用。

數據量過大,單線程執行方式造成效率過低如何處理:放在后台執行

誰執行:redis操作者(用戶)發起指令;redis服務器控制指令執行
什么時間:即時(發起);合理的時間(后台執行)
干什么事情:保存數據

命令

bgsave      #后台操作
作用:手動啟動后台保存操作,但不是立即執行

bgsave指令工作原理   (******)

1.客戶端發送bgsave指令到redis服務端
2.系統調用fork函數,生成子進程
3.創建rdb文件
4.完成之后會返回redis服務端消息,告訴已經保存完畢

操作流程可以在日志文件中查看到

注意:bgsave命令是針對save阻塞問題做的優化。Redis內部所有涉及到RDB操作都采用bgsave的方式,save命令可以放棄使用

使用bgsave指令相關配置
stop-write-on-bgsave-error yes
說明:后台存儲過程中如果出現錯誤現象,是否停止保存操作,通常默認為開啟狀態

五、RDB啟動方式——自動執行save配置(后台還是使用bgsave指令)

前面兩種都是手動執行,如果忘記執行命令怎么辦?不知道數據產生了多少變化,何時保存。
自動執行
誰:redis服務器發起指令(基於條件)
什么時間:滿足條件
干什么事情:保存數據
conf配置文件:  save seconds changes
作用:滿足限定時間范圍內key的變化數量達到指定數量即進行持久化
參數:
second:監控時間范圍(單位是s)
changes:監控key的變化量
位置:在conf配置文件中進行配置

例如
save 900 1      #900秒內監測到1個key發生變化,在規定時間內只要有這些數量的key發生變化

注意:配置好后,后台還是使用的bgsave指令,除了查詢之外,增加、修改、覆蓋key值都會保存記錄

save配置原理

 

注意

1.save配置要根據實際業務情況進行設置,頻率過高過低都會出現性能問題,結果可能是災難性的。
2.save配置中對於second和changes設置通常具有互補對應關系,盡量不要設置成包含關系
3.save配置啟動后執行的是bgsave操作

六、RDB三種啟動方式對比

 

七、RDB特殊啟動形式

1.全量復制
在主從復制中詳細講解
2.服務器運行過程中重啟
debug reload 3.關閉服務器時指定保存數據
shutdown save

八、RDB優缺點

 


免責聲明!

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



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