欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:[沫忘錄]Redis 持久化

柚子快報(bào)邀請(qǐng)碼778899分享:[沫忘錄]Redis 持久化

http://yzkb.51969.com/

[沫忘錄]Redis 持久化

Redis的數(shù)據(jù)主要儲(chǔ)存于內(nèi)存,如果不將這些數(shù)據(jù)以某種方式持久化到磁盤上做備份,則很有可以在各種突發(fā)情況而導(dǎo)致的Redis崩潰中丟失數(shù)據(jù)。

持久化主要有以下四種方式:

RDB:數(shù)據(jù)快照保存。

AOF:保存寫日志到磁盤上。

No persistence:不做任何持久化處理,純緩存模式。

RDB + AOF:采用RDB和AOF混合的方式,對(duì)數(shù)據(jù)進(jìn)行可持久化處理。

RDB(redis database)

RDB 持久性以指定時(shí)間間隔執(zhí)行數(shù)據(jù)集的時(shí)間點(diǎn)快照,快照通常儲(chǔ)存在RDB文件(dump.rdb)中。

redis[7].conf參數(shù)設(shè)置

#在配置文件中SNAPSHOTTING模塊下

#設(shè)置second秒后修改達(dá)change次后,保存快照

save

默認(rèn)配置: Redis6.0.16以下 save 900 1 save 300 10 save 60 10000

Redis6.2以及Redis-7.0.0 save 3600 1 save 300 100 save 60 10000

#設(shè)置dump文件的保存路徑,默認(rèn)./

dir /myredis/dumpfiles #示例路徑(該路徑文件已存在)

#設(shè)置dump文件名,默認(rèn) dump.rdb

dbfilename dump6379.rdb #當(dāng)有多臺(tái)redis服務(wù)器,在dump后加端口號(hào)方便區(qū)分

自定義的修改路徑可以進(jìn)入redis里用CONFIG GET dir獲取目錄

當(dāng)然,CONFIG GET也可以獲取各種配置文件中的參數(shù)。

恢復(fù)redis數(shù)據(jù)

執(zhí)行flushall/flushdb命令會(huì)刷新dump.rdb文件成空文件。

shutdown會(huì)直接保存當(dāng)前數(shù)據(jù)快照。

在一般崩潰時(shí),重啟就會(huì)從dump.rdb文件讀取數(shù)據(jù)。

而對(duì)應(yīng)執(zhí)行清空命令時(shí),則需要使用事前拷貝的dump.rdb的副本來替換當(dāng)前正在使用的rdb文件。(物理恢復(fù))

因此不能將備份文件dump.rdb和生產(chǎn)redis服務(wù)器放同一臺(tái)機(jī)器,必須分開各自儲(chǔ)存以防生產(chǎn)機(jī)物理損害后備份文件也損壞了。

手動(dòng)觸發(fā)

redis提供了兩個(gè)命令來生成RDB文件

#阻塞保存RDB文件,生產(chǎn)禁止使用,嚴(yán)重影響效率

SAVE

#創(chuàng)建子進(jìn)程保存RDB文件

BGSAVE

#獲取最后一次成功保存快照的時(shí)間戳

LASTSAVE

#可以在命令行上使用以下命令轉(zhuǎn)換成自然時(shí)間

date -d @時(shí)間戳

優(yōu)點(diǎn)

適合大規(guī)模的數(shù)據(jù)備份按照業(yè)務(wù)定時(shí)備份對(duì)數(shù)據(jù)的完整性和一致性要求不高RDB文件在內(nèi)存的加載速度比AOF快得多(AOF需要每條指令都執(zhí)行,一步步恢復(fù)數(shù)據(jù))

劣勢(shì)

備份的時(shí)間粒度太大,如果崩潰,丟失最后一次備份之后的數(shù)據(jù)時(shí),數(shù)據(jù)偏多RDB會(huì)經(jīng)常創(chuàng)建子進(jìn)程進(jìn)行數(shù)據(jù)備份,如果數(shù)據(jù)量過大,子進(jìn)程過多,會(huì)導(dǎo)致內(nèi)存占用過多的同時(shí)服務(wù)請(qǐng)求產(chǎn)生瞬間延遲。

修復(fù)rdb文件

rdb文件內(nèi)如果出現(xiàn)亂碼或違規(guī)數(shù)據(jù)會(huì)導(dǎo)致無法啟動(dòng)redis。

此時(shí)需要使用指令進(jìn)行數(shù)據(jù)修復(fù)。

#修復(fù)指令

redis-check-rdb /myredis/dumpfiles/dump.rdb #即rdb文件的路徑

禁用快照

#短期禁用

redis_cli config set save ""

#永久禁用,在redis.config文件設(shè)置

save ""

AOF(append only file)

AOF指以日志的形式來記錄每個(gè)寫操作,將Redis執(zhí)行過的所有寫指令記錄下來,追加在日志文件中。 當(dāng)Redis啟動(dòng)時(shí),會(huì)讀取該文件重新構(gòu)建數(shù)據(jù)。

AOF默認(rèn)關(guān)閉,當(dāng)需要使用AOF時(shí),需要在配置文件中設(shè)置以下命令

appendonly yes

當(dāng)寫命令到到達(dá)Redis Server后,并不會(huì)直接寫入AOF文件,而是將其先寫入AOF緩存區(qū)中保存,然后再根據(jù)三種寫回策略寫入AOF文件,類似于MySQL內(nèi)存中的change buffer緩沖區(qū)寫入到磁盤上的systemtable系統(tǒng)表空間中。 當(dāng)AOF文件無法寫入(或?qū)懭肓康竭_(dá)一定峰值)后,會(huì)觸發(fā)重寫機(jī)制。Redis服務(wù)器會(huì)根據(jù)當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)狀態(tài),在重寫緩沖區(qū)中重構(gòu)AOF文件,然后將新文件覆蓋到舊文件上。

三種寫回策略

Always 每個(gè)寫回命令執(zhí)行完后立刻同步地將日志寫回磁盤。everysec 每秒寫回,每個(gè)命令執(zhí)行完后,先將日志寫到AOF文件的內(nèi)存緩沖區(qū),然后每隔1秒把緩沖區(qū)的內(nèi)容寫入到磁盤。no 每個(gè)寫命令存放在AOF緩沖區(qū),然后由操作系統(tǒng)決定何時(shí)寫回磁盤空間(如果宕機(jī),丟失數(shù)據(jù)過多)。

配置參數(shù)

appendfsync every sec

版本迭代導(dǎo)致的AOF文件目錄變化

redis 6及之前,dump.rdb和appendonly.aof文件都儲(chǔ)存在同一個(gè)目錄(RDB目錄)下。 redis 7及之后,Redis在RDB目錄下新建了appendonlydir文件夾用以存放aof文件。 #配置參數(shù)

appenddirname "appendonlydir"

版本迭代導(dǎo)致的AOF文件名變化

redis 6及之前,日志信息統(tǒng)一存放在一個(gè)AOF文件中。 #配置參數(shù)

appendfilename "appendonly.aof"

redis 7及之后,在相同的配置參數(shù)下,AOF文件被拆分成多個(gè)AOF文件:

BASE(如appendonly.aof.1.base.rdb):表示基礎(chǔ)AOF, 一般由子進(jìn)程重寫產(chǎn)生,該文件至多一個(gè)。INCR(如appendonly.aof.n.incr.aof):表示增量AOF,一般在AOFRW(即AOF文件重寫)開始執(zhí)行時(shí)被創(chuàng)建,該文件存在多個(gè)。HISTORY:表示歷史AOF,每當(dāng)AOFRW成功后,BASE和INCR文件都將變成HISTORY文件,該文件由Redis自動(dòng)刪除。(該文件不可見但存在)為了方便管理這些文件,引入了一個(gè)manifest(清單)文件來跟蹤管理這些AOF文件。

Redis數(shù)據(jù)恢復(fù)

物理恢復(fù)同RDB文件一樣,需要手動(dòng)拷貝,手動(dòng)覆蓋。

異常恢復(fù)也需要使用指令進(jìn)行文件恢復(fù)。

redis-check-aof --fix 待修復(fù)的.incr.aof文件

#這個(gè)是日常工作記錄數(shù)據(jù)的最主要文件,一般對(duì)該文件進(jìn)行修復(fù)操作。

優(yōu)勢(shì)

AOF在非純緩存模式下,最多丟失1秒以內(nèi)的數(shù)據(jù)。三種寫回策略能夠給予用戶對(duì)性能和數(shù)據(jù)一致性之間權(quán)衡的可操作性。AOF日志是一個(gè)僅附加日志,因此不會(huì)出現(xiàn)磁盤尋道問題,也不會(huì)在斷電時(shí)出現(xiàn)文件損壞問題。即使因某種原因?qū)е伦钚碌娜罩緦懭氩蝗?,也能通過redis-check-aof進(jìn)行文件修復(fù)。當(dāng)AOF文件過大時(shí),重寫機(jī)制也能極大的縮減文件體積,避免了因文件溢出導(dǎo)致的數(shù)據(jù)丟失。AOF文件可讀性強(qiáng)且易導(dǎo)出。而且AOF文件能夠在某種程度上提供數(shù)據(jù)回滾機(jī)制:當(dāng)不小心使用FLUSHALL指令清除了所有數(shù)據(jù),只要在此期間沒有執(zhí)行日志重寫,那么仍可以通過shutdown停止服務(wù)器,刪除AOF文件的最新指令來恢復(fù)數(shù)據(jù)。

劣勢(shì)

AOF文件通常比相同數(shù)據(jù)集的等效RDB文件要大。AOF文件的寫入頻次過高,磁盤IO頻繁,相比于RDB,在巨大負(fù)載的情況下,延遲可能過高。由于AOF的恢復(fù)策略,導(dǎo)致AOF的數(shù)據(jù)恢復(fù)要慢于RDB。

重寫機(jī)制

自動(dòng)觸發(fā)

配置參數(shù)

auto-aof-rewrite-percentage 100 #根據(jù)上次重寫文件,文件大小增加的百分比幅度

auto-aof-rewrite-min-size 64mb #觸發(fā)重寫的文件大小

#兩者同時(shí)滿足才會(huì)觸發(fā)重寫

正如上面提到的,AOF文件重寫是根據(jù)數(shù)據(jù)庫當(dāng)前的數(shù)據(jù)狀態(tài),因此對(duì)同一key的寫操作只會(huì)保留最新的一次。

手動(dòng)觸發(fā)

使用指令**BGREWRITEAOF**直接觸發(fā)重寫。

當(dāng)"重寫子進(jìn)程"完成重寫工作后,它會(huì)給父進(jìn)程發(fā)一個(gè)信號(hào),父進(jìn)程收到信號(hào)后會(huì)將內(nèi)存中緩存的寫指令追加到新的AOF文件中,然后用新文件覆蓋舊文件。

#是否允許在重寫時(shí)繼續(xù)追加新的AOF日志的配置參數(shù)

no-appendfsync-on-rewrite no/yes

RDB-AOF混合持久化

RDB和AOF兩種模式能夠共存。但AOF的優(yōu)先級(jí)比RDB高,當(dāng)有AOF時(shí),優(yōu)先由其來進(jìn)行數(shù)據(jù)恢復(fù)。

#開啟混合模式的配置參數(shù)

aof-use-rdb-preamble no/yes

在混合模式開啟后,RDB模式做全量持久化,AOF模式做增量持久化。當(dāng)觸發(fā)重寫時(shí),RDB將生成最新數(shù)據(jù)的快照。

純緩存模式

即同時(shí)關(guān)閉RDB和AOF的模式,適用于高性能服務(wù)器。

即使禁用了RDB和AOF,我們?nèi)钥梢允謩?dòng)觸發(fā)兩種模式的文件的生成。

柚子快報(bào)邀請(qǐng)碼778899分享:[沫忘錄]Redis 持久化

http://yzkb.51969.com/

推薦鏈接

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19873001.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄