Redis-Rdb Reids-Aof

 

 

 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.啓動後會發現數據已完成恢復

  

相關文章
相關標籤/搜索