Redis-序列化和存儲模式


Redis中數據存儲模式有2種:cache-only,persistence;
• cache-only即只做為“緩存”服務,不持久數據,數據在服務終止后將消失,此模式下也將不存在“數據恢復”的手段,是一種安全性低/效率高/容易擴展的方式;
• persistence即為內存中的數據持久備份到磁盤文件,在服務重啟后可以恢復,此模式下數據相對安全。
對於persistence持久化存儲,Redis提供了兩種持久化方法:
    • Redis DataBase(簡稱RDB)

      rdb更像是一個定時任務,在固定的時間點通過單獨的子進程來進行持久化,主進程不進行任何IO操作,在持久化結束后用這個臨時文件去替換上次的的持久文件,但是一旦在持久化過程中發生故障,此期間的數據將會丟失.Redis默認開啟的是此模式,此模式性能更高其使用數據快照的方式也更適合目前主流開發.

  redis.conf的設置參數為:

#dbfilename:持久化數據存儲在本地的文件
dbfilename dump.rdb
#dir:持久化數據存儲在本地的路徑,如果是在/redis/redis-3.0.6/src下啟動的redis-cli,則數據會存儲在當前src目錄下
dir ./
##snapshot觸發的時機,save <seconds> <changes>  
##如下為900秒后,至少有一個變更操作,才會snapshot  
##對於此值的設置,需要謹慎,評估系統的變更操作密集程度  
##可以通過“save “””來關閉snapshot功能  
#save時間,以下分別表示更改了1個key時間隔900s進行持久化存儲;更改了10個key300s進行存儲;更改10000個key60s進行存儲。
save 900 1
save 300 10
save 60 10000
##當snapshot時出現錯誤無法繼續時,是否阻塞客戶端“變更操作”,“錯誤”可能因為磁盤已滿/磁盤故障/OS級別異常等  
stop-writes-on-bgsave-error yes  
##是否啟用rdb文件壓縮,默認為“yes”,壓縮往往意味着“額外的cpu消耗”,同時也意味這較小的文件尺寸以及較短的網絡傳輸時間  
rdbcompression yes  

  

 

    • Append-only file (簡稱AOF)

aof,每秒向日志文件尾部追加數據和對數據的操作的指令,更加的安全可靠,即使redis發生故障,也只會丟失1s的數據,日志文件若不完整也可以使用redis-check-aof來進行修復.並且可以對日志文件進行操作刪除不必要的指令和數據.AOF中的內容是字符串還挺方便理解的......但是AOF文件會比RDB文件大許多恢復速度會慢上許多

Redis默認是關閉AOF的需要更改配置文件來開啟 reds.conf:appendonly yes

##此選項為aof功能的開關,默認為“no”,可以通過“yes”來開啟aof功能  
##只有在“yes”下,aof重寫/文件同步等特性才會生效  
appendonly yes  
##指定aof文件名稱  
appendfilename appendonly.aof  
##指定aof操作中文件同步策略,有三個合法值:always everysec no,默認為everysec  
appendfsync everysec  
##在aof-rewrite期間,appendfsync是否暫緩文件同步,"no"表示“不暫緩”,“yes”表示“暫緩”,默認為“no”  
no-appendfsync-on-rewrite no  
##aof文件rewrite觸發的最小文件尺寸(mb,gb),只有大於此aof文件大於此尺寸是才會觸發rewrite,默認“64mb”,建議“512mb”  
auto-aof-rewrite-min-size 64mb  
##相對於“上一次”rewrite,本次rewrite觸發時aof文件應該增長的百分比。  
##每一次rewrite之后,redis都會記錄下此時“新aof”文件的大小(例如A),那么當aof文件增長到A*(1 + p)之后  
##觸發下一次rewrite,每一次aof記錄的添加,都會檢測當前aof文件的尺寸。  
auto-aof-rewrite-percentage 100  

如果緩存中的數據會經常變更aof會造成很大的磁盤負擔.

 

當然,兩種模式可以共同開啟(不推薦)

在當前網絡環境和物理環境都穩定的情況下還是推薦使用rdb恢復起來速度快,當然也可以master使用AOF確保數據完整性,作為備份的第一選擇.而slave作快速響應客戶端請求的角色使用rdb.


免責聲明!

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



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