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

歡迎訪問 生活随笔!

生活随笔

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

数据库

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

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

1 前言

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

2 Redis持久化

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

2.1 RDB(快照模式)

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

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

2.1.1 策略

(1)自動:BGSAVE

--特點(diǎn):

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

(2)手動:SAVE

--特點(diǎn):

【1】客戶端(redis-cli)發(fā)起SAVE命令。
【2】阻塞Redis服務(wù),無法響應(yī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. 會丟失最近寫入、修改的而未能持久化的數(shù)據(jù)。
ii. folk過程非常耗時,會造成毫秒級不能響應(yīng)客戶端請求。

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

2.2.1 特點(diǎn)

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

2.2.2 寫入機(jī)制

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

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

2.2.3 寫入磁盤的策略

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

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

2.2.4 aof重寫機(jī)制

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

2.2.4.1 重寫過程

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

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

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

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

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

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

auto-aof-rewrite-percentage <percent>

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

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

(1)寫入機(jī)制,默認(rèn)fysnc(手工同步)每秒執(zhí)行,性能很好不阻塞服務(wù),最多丟失一秒的數(shù)據(jù);
(2)重寫機(jī)制,優(yōu)化AOF文件;
(3)如果誤操作了(FLUSHALL等),只要AOF未被重寫,停止服務(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ù)庫速度較RDB慢(文本,命令重演)。

總結(jié)

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

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