玩轉(zhuǎn)redis持久化,阿里架構(gòu)師給你來(lái)一篇方案介紹-創(chuàng)新互聯(lián)

玩轉(zhuǎn)redis持久化,阿里架構(gòu)師給你來(lái)一篇方案介紹

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的襄汾網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

一、基本介紹

本次演示使用的redis版本是3.2.100,操作系統(tǒng)是win10。

redis支持兩種持久化方案,RDB和AOF,前者是默認(rèn)打開(kāi)的,后者需要手動(dòng)開(kāi)啟。我們通過(guò)配置文件可以驗(yàn)證這一點(diǎn),

RDB默認(rèn)開(kāi)啟

save 900 1
save 300 10
save 60 10000

這三條配置是RDS觸發(fā)快照的條件,它們的意思分別是:

  1. 900秒內(nèi)如果有一條寫(xiě)入,則產(chǎn)生快照
  2. 300秒內(nèi)如果有1000次寫(xiě)入,則產(chǎn)生快照
  3. 60秒內(nèi)如果有10000次寫(xiě)入,則產(chǎn)生快照

當(dāng)然,觸發(fā)rdb快照的條件不止這些,下面會(huì)講到。

AOF默認(rèn)關(guān)閉

appendonly no

二、RDB介紹

RDB的方案是當(dāng)滿(mǎn)足觸發(fā)條件是,將內(nèi)存中的數(shù)據(jù)以二進(jìn)制的方式寫(xiě)入磁盤(pán)保存,默認(rèn)保存的文件叫dump.rdb(可以改),當(dāng)redis重啟時(shí),會(huì)讀取該文件進(jìn)行數(shù)據(jù)恢復(fù)。

查看快照文件的信息

127.0.0.1:6379> config get dbfilename
1) "dbfilename"
2) "dump.rdb"
127.0.0.1:6379> config get dir
1) "dir"
2) "C:\\redis-6379"
127.0.0.1:6379>

觸發(fā)RDB快照條件

除了上面提到的在指定時(shí)間內(nèi),指定寫(xiě)次數(shù)觸發(fā)之外,下面幾種情況也會(huì)觸發(fā)redis執(zhí)行RDB快照,

  1. 手動(dòng)執(zhí)行save(同步阻塞)或者bgsave(異步阻塞)命令
  2. 執(zhí)行flushall命令
  3. redis退出,執(zhí)行shutdown命令

下面拿第一種情況演示下,這里會(huì)用到info Persistence命令,用來(lái)查看持久化信息。

127.0.0.1:6379> info persistence
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1561595205
...省略其它
127.0.0.1:6379> save
OK
127.0.0.1:6379> info persistence
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1561595940
...省略其它
127.0.0.1:6379>

注意看rdb_last_save_time字段,說(shuō)明save命令觸發(fā)了持久化。

三、AOF介紹

為了演示AOF,我們需要手動(dòng)把AOF開(kāi)關(guān)打開(kāi),然后重啟redis。

AOF將Redis執(zhí)行的每一條寫(xiě)命令追加到磁盤(pán)文件(appendonly.aof)中,如果打開(kāi)了AOF,redis啟動(dòng)時(shí)候優(yōu)先選擇從AOF文件恢復(fù)數(shù)據(jù)。

相關(guān)配置

除了開(kāi)關(guān),和AOF相關(guān)的配置還有以下幾個(gè):

appendfilename "appendonly.aof"   #數(shù)據(jù)庫(kù)文件名
# appendfsync always    #每個(gè)命令都追加寫(xiě)入
appendfsync everysec    #每秒寫(xiě)1次
# appendfsync no        #寫(xiě)入工作交給操作系統(tǒng),由操作系統(tǒng)判斷緩沖區(qū)大小,統(tǒng)一寫(xiě)入到aof

no-appendfsync-on-rewrite  yes:   #正在導(dǎo)出rdb快照的過(guò)程中,是否停止同步aof
auto-aof-rewrite-percentage 100   #aof文件大小比起上次重寫(xiě)時(shí)的大小,增長(zhǎng)率100%時(shí),重寫(xiě)
auto-aof-rewrite-min-size 64mb    #aof文件,至少超過(guò)64M時(shí),才重寫(xiě)

重寫(xiě)機(jī)制

通過(guò)前面講述的AOF的過(guò)程,聰明的你可能會(huì)想到一個(gè)問(wèn)題,AOF不斷的追加命令到文件,那文件豈不是越來(lái)越大,時(shí)間長(zhǎng)了對(duì)磁盤(pán)空間也是負(fù)擔(dān)啊。

你都想到了,redis的作者會(huì)想不到嗎?redis引入了重寫(xiě)機(jī)制來(lái)解決這個(gè)問(wèn)題。上面配置的最后兩條其實(shí)就是重寫(xiě)的觸發(fā)條件,說(shuō)白了意思就是:

當(dāng)AOF文件大小是上次rewrite后大小的一倍且文件大于64M時(shí)觸發(fā)

除了上面的條件觸發(fā),AOF也支持手動(dòng)觸發(fā)(bgrewriteaof命令)下面用這個(gè)命令演示重寫(xiě)

λ redis-cli.exe
127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started
127.0.0.1:6379>

啟動(dòng)日志:

[18268] 27 Jun 09:23:41.282 # Server started, Redis version 3.2.100
[18268] 27 Jun 09:23:41.282 * The server is now ready to accept connections on port 6379
[18268] 27 Jun 09:24:03.236 * Background append only file rewriting started by pid 18740
[18268] 27 Jun 09:24:03.388 * AOF rewrite child asks to stop sending diffs.
[18268] 27 Jun 09:24:03.488 # fork operation complete
[18268] 27 Jun 09:24:03.489 * Background AOF rewrite terminated with success
[18268] 27 Jun 09:24:03.491 * Residual parent diff successfully flushed to the rewritten AOF (0.00 MB)
[18268] 27 Jun 09:24:03.496 * Background AOF rewrite finished successfully

四、總結(jié)

  1. 如果使用持久化,建議RDB和AOF都開(kāi)啟,雙重保障。AOF會(huì)優(yōu)先執(zhí)行,如果執(zhí)行失敗還有RDB
  2. RDB適合大規(guī)模數(shù)據(jù)恢復(fù),但是完整性不如AOF,因?yàn)镽DB可能在最后一次備份時(shí)宕機(jī)了
  3. RDB相對(duì)AOF比較占用內(nèi)存

寫(xiě)在最后

玩轉(zhuǎn)redis持久化,阿里架構(gòu)師給你來(lái)一篇方案介紹

創(chuàng)新互聯(lián)www.cdcxhl.cn,專(zhuān)業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。

新聞名稱(chēng):玩轉(zhuǎn)redis持久化,阿里架構(gòu)師給你來(lái)一篇方案介紹-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://muchs.cn/article34/ddhdpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、小程序開(kāi)發(fā)、標(biāo)簽優(yōu)化、網(wǎng)站制作云服務(wù)器、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司