Rdb eq 快照redis
其實就是將數據保存至硬盤內!(本身理解)數據庫
操做實現快照app
1.執行save(該方法會組織客戶端的操做直到完成快照後再次放行)異步
1.Redis執行save方法code
2.在運行目錄下生成dump.rdbserver
2.1.複製dump.rdb文件內容,建立dump_1.rdb文件將dump.rdb內容放進去blog
3.執行FLUSHALL 清空數據庫,執行shutdown 關閉數據庫同步
4.更換dump_1.rdb 文件名稱 爲dump.rdb (Linux更新文件名稱mv - dump_1.rdb dump.rdb)class
5.執行 redis-server ../redis.conf 後臺
6.keys * 你會驚喜的發現原flushall以前的數據又會存在啦
7.由於執行完flushall後,後臺默認執行bgsave方法保存快照因此要建立 dump_1.rdb文件來存儲以前的文件
2.bgsave在後臺異步進行快照
操做步驟如save一致。
3.系統配置自定義快照存儲操做。
Aof(append Only File)
做用和 rdb相似,aof至關於將一切非查詢操做的語句都進行存儲
當啓動redis-server時會加載appendonly.aof文件
當appendonly.do和dump.rdb同時存在 根據redis.conf配置文件內 appendonly屬性進行判斷加載 若是appendonly屬性等於yes 加載appendOnly.conf不加載dump.rdb文件
appendonly屬性默認爲 no 。如下是截圖(appendfilename是指對appendonly.aof文件重命名建議不要修改)
appendfsyn是保存策略取值範圍
always:老是寫入aof文件,並完成磁盤同步
everysec:每一秒寫入aof文件,並完成磁盤同步 默認
no:寫入aof文件,不等待磁盤同步。
實例:
1.執行flushall命令清空redis庫,再次查詢全部key時爲空
2.關閉redis服務
3.查詢當前文件夾內容,存在一個appendonly,aof 和 dump.rdb文件,爲了試驗數據確實是從appendonly,aof文件中讀出的,將dump.rdb文件刪除
4.刪除後的內容
5.重新啓動redis-server,查詢redis發現數據是空的
6.上面說過appendonly.aof文件會存儲除查詢以外的全部操做,咱們打開appendonly.aof文件查看下文件內容翻到最後會發現他連flushall操做都記錄了因此致使上面查詢數據時,返回爲空。
7.將flushall刪除,並隨便輸入一些內容這一步是爲了對redis-check-aof進行使用
8.啓動redis-server服務連接redis發現連接不上
9.這個是由於咱們在appendonly.aof文件內修改了加入了錯誤內容致使服務不能正常啓動,修復方法(redis-check-aof --fix appendonly.aof命令進行修復,修復完成後再次啓動)
10.啓動後會發現數據已完成恢復