redis的持久化機制-自總

Redis的持久化: Redis的高性能是由於其將所有數據都存儲在了內存中,爲了使Redis在重啓之後仍能保證數據不丟失,需要將數據從內存中同步到硬盤中,這一過程就是持久化

Redis的持久化 RDB持久化(默認支持) [快照機制] AOF持久化 [日誌機制]
概念 該機制是指在指定的時間間隔內將內存中的數據集快照寫入磁盤 該機制將以日誌的形式記錄服務器所處理的每一個寫操作,在Redis服務器啓動之初會讀取該文件來重新構建數據庫,保證啓動後數據庫中的數據是完整的.
優點 RDB啓動效率更高,性能最大化(看不到數據) 更高的數據安全性,能夠看到數據,具體的增刪改查
缺點 數據丟失 效率低

 

Redis持久化之Rdb和Aof[兩種持久化方案]

rdb是redis默認的持久化方案, 在指定的時間間隔內, 執行指定次數的寫操作, 則會將內存中的數據寫入到磁盤中, 即在指定目錄下生成一個dump.rdb文件

Redis重啓會通過加載dump.rdb文件恢復數據, redis採用LZF壓縮方式, 但是佔用了一點CPU的時間, 若關閉選項, 但會導致數據庫文件巨大的變化,

觸發RDB快照:

  1. 在指定的時間間隔內, 執行指定次數的寫操作
  2. 執行save(阻塞, 只管保存快照, 其他的等待) 或者是bgsave(異步)命令
  3. 執行flushall命令, 清空數據庫所有數據, 意義不大
  4. 執行shutdown命令, 保證服務器正常關閉且不丟失任何數據, 意義也不大

通過RDB文件恢復數據:

將dump.rdb文件拷貝到redis的安裝目錄bin目錄下, 重啓redis服務即可, 在實際開發中, 一般考慮到物理機硬件損壞情況, 選擇備份dump.rdb,

RDB的優缺點:

優點: 1. 適合大規模的數據恢復

  1. 如果業務對數據完整性和一致性要求不高, rdb是很好的選擇

缺點:

1, 數據的完整性和一致性不高, 因爲rdb可能在最後一次備份時機

2, 備份時佔用內存, 因爲redis在備份時會獨立創建一個子線程, 將數據寫入到一個臨時文件(此內存中的數據是原來的兩倍),  最後再將臨時文件替換之前的備份文件, 所以redis的持久化和數據的恢復要選擇在夜深人靜的時候執行比較合理

Keys * 匹配數據庫中的所有key

Save阻塞觸發RDB快照, 使其備份數據

Shutdown和flushAll命令都會觸發RDB快照, flushall清空整個redis服務器的數據[幾乎不用]

AOF詳解:

Redis默認不開啓, 它的出現是爲了彌補RDB的不足(數據的不一致性), 所以他採用了日誌的形式來記錄每個寫操作, 並追加到文件中, redis重啓的會根據日誌文件的內容將寫指令從前到後執行一次以完成數據的恢復工作

更新日誌文件時,出現的詞意義:

Always: 同步持久化, 每次發生數據變化會立刻寫入磁盤中, 性能較差當-數據完整性比較好

Everysec: 出廠默認推薦, 每妙異步記錄一次(默認值)

No : 不同步

觸發AOF快照: 根據配置文件觸發, 可以是每次執行觸發, 可以是每秒觸發,, 可以不同步,

根據AOF文件恢復數據

正常情況下, 將Appendonly.aof文件拷貝到redis的安裝目錄的bin目錄下, 重啓redis服務即可, 但在實際開發中, 可能因爲某些原因導致appendonly.aof文件格式異常, 從而導致數據還原失敗, 可以通過命令redis-check-aof--fix  appendonly.aof進行修復.

 

AOF的重寫機制

AOF的工作原理是將寫操作追加到文件中, 文件的冗餘內容會越來越多, redis增加了重寫機制, 當AOF文件的大小超過鎖=所設定的閾值時, redis就會對AOF文件的內容壓縮

重寫的原理: redis會fork出一條新進程, 讀取內存中的數據, 並重新寫到一個臨時文件中, 並沒有讀取舊文件, 最後替換舊的aof文件

觸發機制: 當AOF文件大小是上次rewirte後大小的一倍且文件大於64M時觸發, 一倍與64M可以通過配置文件修改

AOF的優缺點:

優點: 數據的完整性和一致性更高

缺點: 因爲AOF記錄的內容多, 文件會越來越大, 數據恢復也就越來越慢

總結:

  1. redis默認開啓rdb持久化方式, 在指定的時間間隔內, 執行指定次數的寫操作, 則將內存中的數據寫入到磁盤中
  2. Rdb持久化適合大規模的數據恢復但它的數據一致性和完整性較差
  3. Redis需要手動開啓AOF持久化方式, 默認是每妙將寫操作日誌追加到AOF文件中
  4. AOF的數據完整性比rdb高, 但記錄內容多了, 會影響數據恢復的效率
  5. Redis針對AOF文件大的問題, 提供重寫的瘦身機制
  6. 若只打算用redis做緩存, 可以關閉持久化
  7. 若只打算使用redis的持久化, 建議rdb與aof都開啓, 其實rdb更適合做數據的備份,Aof出問題了, 還有rdb
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章