redis支持2種持久化策略:snapshot方式和commandlog方式,前者通過將當(dāng)前內(nèi)存數(shù)據(jù)快照周期性寫入RDB文件來實現(xiàn);后者通過在log中記錄Redis進程收到的寫操作來實現(xiàn),下次Redis重啟時,回放commandlog來恢復(fù)數(shù)據(jù)狀態(tài)。
根據(jù)實際需求,用戶可以選擇完全禁用持久化,也可以在同一個Redis實例中同時啟用RDB和AOF。
特別注意:如果部署方式為主從,則不同實例的持久化時機最好錯開!避免master和slaves同時進入后臺持久化,這可能會降低系統(tǒng)的性能。
創(chuàng)新互聯(lián)公司是一家專注于做網(wǎng)站、成都網(wǎng)站設(shè)計與策劃設(shè)計,齊河網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:齊河等地區(qū)。齊河做網(wǎng)站價格咨詢:18982081108
1. RDB相關(guān)配置
1) databases
配置db文件的數(shù)目,可以用select <dbid>指令為每個連接指定后續(xù)持久化時的db文件,新連接默認均使用db 0
2) save
SNAPSHOTTING的持久化方式有多種save策略可供選擇,而且支持混用,例如:
save 900 1
save 300 100
save 60 10000
上述配置的效果是:snapshotting會在3個條件中的任何一個滿足時被觸發(fā):a. 900s內(nèi)至少1個key有變化;b. 300s內(nèi)至少100個key有變化;c. 60s內(nèi)至少有10000個key有變化
save條件被觸發(fā)時,Redis通過fork子進程,由子進程在后臺實現(xiàn)異步dump磁盤。根據(jù)fork的寫時復(fù)制策略,若持久化過程中出現(xiàn)很多寫入請求,在最壞的情況下,需要的內(nèi)存是當(dāng)前數(shù)據(jù)集所占內(nèi)存的2倍。
備注1:上述配置的3個觸發(fā)條件其實是逐次加強的,哪個條件先滿足就先觸發(fā)那個save策略。
備注2:如果業(yè)務(wù)不需要持久化或不需要RDB方式的持久化,可以通過注釋掉save配置項來實現(xiàn)
3) stop-writes-on-bgsave-error
指定Redis在后臺dump磁盤出錯時的行為,默認為yes,表示若后臺dump出錯,則RedisServer拒絕新的寫入請求,通過這種方式來引起用戶警覺,避免因用戶未發(fā)現(xiàn)異常而引起更大的事故。
4) rdbcompression
RDB文件是否壓縮存儲,若為yes,會在壓縮時消耗一點CPU,但省磁盤空間。
5) rdbchecksum
RDB文件是否需要CRC64校驗, 若為yes,會在生成RDB文件后計算其CRC64并將結(jié)果追加至文件尾,同樣,Redis啟動Load RDB時,也會先計算該文件的CRC64并與dump時的計算結(jié)果對比。
好處:可以嚴格保證RDB的完整性及安全性
代價:會在dump或load時損失10%的性能。如果要最大化Redis的性能,這個配置項應(yīng)該用no關(guān)掉
6) dbfilename
指定RDB文件名,默認為dump.rdb
7) dir
指定RDB文件存放目錄的路徑,若包含多級路徑,則相關(guān)父路徑需事先mkdir出來,否則啟動失敗。
2. AOF相關(guān)配置
默認情況下,Redis以寫RDB文件的方式持久化數(shù)據(jù)(除非用戶主動禁用RDB方式的持久化)。若Redis進程掛掉或機器掉電,則上次save完成時刻至故障時刻這段時間內(nèi)的新數(shù)據(jù)會丟失。AOF的引入可以將數(shù)據(jù)損失的程度減少到1秒或1條寫入指令。
1) appendonly
配置是否啟用AOF持久化,默認為no
2) appendfilename
指定aof文件名,默認為appendonly.aof
3) appendfsync
配置aof文件的同步方式,Redis支持3種方式:
a. no => redis不主動調(diào)用fsync,何時刷盤由OS來調(diào)度;
b. always => redis針對每個寫入命令均會主動調(diào)用fsync刷磁盤;
c. everysec => 每秒調(diào)一次fsync刷盤。
用戶可以根據(jù)業(yè)務(wù)對數(shù)據(jù)的敏感性選擇合適的同步策略。
4) no-appendfsync-on-rewrite
指定是否在后臺aof文件rewrite期間調(diào)用fsync,默認為no,表示要調(diào)用fsync(無論后臺是否有子進程在刷盤)。備注:Redis在后臺寫RDB文件或重寫afo文件期間會存在大量磁盤IO,此時,在某些linux系統(tǒng)中,調(diào)用fsync可能會阻塞。
5) auto-aof-rewrite-percentage
指定Redis重寫aof文件的條件,默認為100,表示與上次rewrite的aof文件大小相比,當(dāng)前aof文件增長量超過上次afo文件大小的100%時,就會觸發(fā)background rewrite。若配置為0,則會禁用自動rewrite。
6) auto-aof-rewrite-min-size
指定觸發(fā)rewrite的aof文件大小。若aof文件小于該值,即使當(dāng)前文件的增量比例達到auto-aof-rewrite-percentage的配置值,也不會觸發(fā)自動rewrite。即這兩個配置項同時滿足時,才會觸發(fā)rewrite。
3. 需要明確的問題
1)若同時啟用RDB和AFO兩種持久化方式,則Redis Server啟動時,會加載AOF文件以重建數(shù)據(jù)集,因為AOF可以保證數(shù)據(jù)是相對最完整的。
2)關(guān)于RDB和AOF各自的優(yōu)缺點以及用戶如何選擇合適的持久化策略,可以參考這里。
3)簡言之,若可以忍受數(shù)據(jù)丟失,只啟用RDB即可;若對數(shù)據(jù)很敏感,可以同時啟用RDB和AOF;不建議只啟用AOF(注釋配置文件的save配置項或通過redis-cli執(zhí)行save ""),因為一旦如果AOF文件損壞或AOF解析引擎存在bug,整個數(shù)據(jù)集都無法重建。
本文題目:3、redis.conf中的持久化相關(guān)配置
網(wǎng)址分享:http://muchs.cn/article46/ghjehg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、小程序開發(fā)、做網(wǎng)站、軟件開發(fā)、網(wǎng)站內(nèi)鏈、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)