日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

redis数据持久化到mysql_Redis【数据持久化篇】

發(fā)布時(shí)間:2025/3/19 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis数据持久化到mysql_Redis【数据持久化篇】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 前言

redis是一款基于內(nèi)存的NoSQL數(shù)據(jù)庫(kù),數(shù)據(jù)都存儲(chǔ)在內(nèi)存中,一旦機(jī)器出現(xiàn)宕機(jī),或者突發(fā)意外斷電等,導(dǎo)致機(jī)器無(wú)法正常工作的情況下,那么redis中的數(shù)據(jù)就丟失了,面對(duì)這種問(wèn)題,redis提供了持久化機(jī)制將數(shù)據(jù)保存到本地磁盤(pán)中,以便在服務(wù)器宕機(jī)之后,可以對(duì)數(shù)據(jù)進(jìn)行恢復(fù)。

2 Redis持久化

i. Redis持久化,就是將內(nèi)存中的數(shù)據(jù),永久保存到磁盤(pán)上。
ii. Redis持久化有兩種方式:RDB(Redis DB)、AOF(AppendOnlyFile)。

2.1 RDB(快照模式)

在默認(rèn)情況下,Redis 將數(shù)據(jù)庫(kù)快照保存在名字為dump.rdb的二進(jìn)制文件中,可以在redis.conf配置文件中修改持久化信息。

save 900 1 表示在900秒內(nèi),至少更新了1條數(shù)據(jù)。Redis就將數(shù)據(jù)持久化到硬盤(pán)
save 300 10 表示在300秒內(nèi),至少更新了10條數(shù)據(jù),Redis就會(huì)觸發(fā)將數(shù)據(jù)持久化到硬盤(pán)
save 60 10000 表示60秒內(nèi),至少更新了10000條數(shù)據(jù),Redis就會(huì)觸發(fā)將數(shù)據(jù)持久化到硬盤(pán)

2.1.1 策略

(1)自動(dòng):BGSAVE

--特點(diǎn):

【1】按照配置文件中的條件滿(mǎn)足就執(zhí)行BGSAVE。
【2】非阻塞,Redis服務(wù)正常接收處理客戶(hù)端請(qǐng)求。
【3】Redis會(huì)folk()一個(gè)新的子進(jìn)程來(lái)創(chuàng)建RDB文件,子進(jìn)程處理完后會(huì)向父進(jìn)程發(fā)送一個(gè)信號(hào),通知它處理完畢,父進(jìn)程用新的dump.rdb替代舊文件。

(2)手動(dòng):SAVE

--特點(diǎn):

【1】客戶(hù)端(redis-cli)發(fā)起SAVE命令。
【2】阻塞Redis服務(wù),無(wú)法響應(yīng)客戶(hù)端請(qǐng)求。
【3】創(chuàng)建新的dump.rdb替代舊文件。

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

i. 執(zhí)行效率高。
ii. 恢復(fù)大數(shù)據(jù)集速度較AOF快。

2.1.3 缺點(diǎn)

i. 會(huì)丟失最近寫(xiě)入、修改的而未能持久化的數(shù)據(jù)。
ii. folk過(guò)程非常耗時(shí),會(huì)造成毫秒級(jí)不能響應(yīng)客戶(hù)端請(qǐng)求。

2.2 AOF(追加模式、命令重演)

2.2.1 特點(diǎn)

【1】Append only file,采用追加的方式保存,默認(rèn)文件為appendonly.aof;
【2】記錄所有的寫(xiě)操作命令,在服務(wù)啟動(dòng)的時(shí)候重演這些命令就可以還原數(shù)據(jù)庫(kù);
【3】AOF默認(rèn)關(guān)閉,需要在配置文件中手動(dòng)開(kāi)啟。

2.2.2 寫(xiě)入機(jī)制

說(shuō)明:AOF機(jī)制,添加了一個(gè)內(nèi)存緩沖區(qū)(buffer),將內(nèi)容寫(xiě)入緩沖區(qū)。

當(dāng)緩沖區(qū)被填滿(mǎn)、或者用戶(hù)手動(dòng)執(zhí)行fsync、或者系統(tǒng)根據(jù)指定的寫(xiě)入磁盤(pán)策略自動(dòng)調(diào)用fdatasync命令,才將緩沖區(qū)里的內(nèi)容真正寫(xiě)入磁盤(pán)里。因此在緩沖區(qū)里的內(nèi)容未寫(xiě)入磁盤(pán)之前,可能會(huì)丟失。

2.2.3 寫(xiě)入磁盤(pán)的策略

appendfsync選項(xiàng),這個(gè)選項(xiàng)的值可以是always、everysec或者no。

Always:服務(wù)器每寫(xiě)入一個(gè)命令,就調(diào)用一次fdatasync,將緩沖區(qū)里面的命令寫(xiě)入到硬盤(pán)。這種模式下,服務(wù)器出現(xiàn)故障,也不會(huì)丟失任何已經(jīng)成功執(zhí)行的命令數(shù)據(jù)。Everysec(默認(rèn)):服務(wù)器每一秒調(diào)用一次fdatasync,將緩沖區(qū)里面的命令寫(xiě)入到硬盤(pán)。這種模式下,服務(wù)器出現(xiàn)故障,最多只丟失一秒鐘內(nèi)的執(zhí)行的命令數(shù)據(jù)。No:服務(wù)器不主動(dòng)調(diào)用fdatasync,由操作系統(tǒng)決定何時(shí)將緩沖區(qū)里面的命令寫(xiě)入到硬盤(pán)。這種模式下,服務(wù)器遭遇意外停機(jī)時(shí),丟失命令的數(shù)量是不確定的。
運(yùn)行速度:always的速度慢,everysec和no都很快。

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

AOF文件過(guò)大,合并重復(fù)的操作,AOF會(huì)使用盡可能少的命令來(lái)記錄。

2.2.4.1 重寫(xiě)過(guò)程

(1)fork一個(gè)子進(jìn)程負(fù)責(zé)重寫(xiě)AOF文件。
(2)子進(jìn)程會(huì)創(chuàng)建一個(gè)臨時(shí)文件寫(xiě)入AOF信息。
(3)父進(jìn)程會(huì)開(kāi)辟一個(gè)內(nèi)存緩沖區(qū)接收新的寫(xiě)命令。
(4)子進(jìn)程重寫(xiě)完成后,父進(jìn)程會(huì)獲得一個(gè)信號(hào),將父進(jìn)程接收到的新的寫(xiě)操作由子進(jìn)程寫(xiě)入到臨時(shí)文件中。
(5)新文件替代舊文件。

重寫(xiě)的本質(zhì):就是將操作同一個(gè)鍵的命令合并。從而減小AOF文件的體積。

2.2.4.2 aof重寫(xiě)觸發(fā)機(jī)制

(1)手動(dòng):客戶(hù)端向服務(wù)器發(fā)送BGREWRITEAOF命令。
(2)自動(dòng):配置文件中的選項(xiàng),自動(dòng)執(zhí)行BGREWRITEAOF命令。

auto-aof-rewrite-min-size <size>

觸發(fā)AOF重寫(xiě)所需的最小體積:只要在AOF文件的體積大于等于size時(shí),才會(huì)考慮是否需要進(jìn)行AOF重寫(xiě),這個(gè)選項(xiàng)用于避免對(duì)體積過(guò)小的AOF文件進(jìn)行重寫(xiě)。

auto-aof-rewrite-percentage <percent>

指定觸發(fā)重寫(xiě)所需的AOF文件體積百分比:當(dāng)AOF文件的體積大于auto-aof-rewrite-min-size指定的體積,并且超過(guò)上一次重寫(xiě)之后的AOF文件體積的percent %時(shí),就會(huì)觸發(fā)AOF重寫(xiě)。(如果服務(wù)器剛剛啟動(dòng)不久,還沒(méi)有進(jìn)行過(guò)AOF重寫(xiě),那么使用服務(wù)器啟動(dòng)時(shí)載入的AOF文件的體積來(lái)作為基準(zhǔn)值)。
將這個(gè)值設(shè)置為0表示關(guān)閉自動(dòng)AOF重寫(xiě)。

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

(1)寫(xiě)入機(jī)制,默認(rèn)fysnc(手工同步)每秒執(zhí)行,性能很好不阻塞服務(wù),最多丟失一秒的數(shù)據(jù);
(2)重寫(xiě)機(jī)制,優(yōu)化AOF文件;
(3)如果誤操作了(FLUSHALL等),只要AOF未被重寫(xiě),停止服務(wù)移除AOF文件尾部FLUSHALL命令,重啟Redis,可以將數(shù)據(jù)集恢復(fù)到FLUSHALL 執(zhí)行之前的狀態(tài)。

2.2.6 缺點(diǎn)

(1)相同數(shù)據(jù)集,AOF文件體積較RDB大了很多。
(2)恢復(fù)數(shù)據(jù)庫(kù)速度較RDB慢(文本,命令重演)。

總結(jié)

以上是生活随笔為你收集整理的redis数据持久化到mysql_Redis【数据持久化篇】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。