国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化

這篇具有很好參考價值的文章主要介紹了redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、RDB快照持久化 原理

二、RDB快照持久化配置(redis.conf):

三、觸發(fā)RDB備份:

1、自動備份,需配置備份規(guī)則:

2、手動執(zhí)行命令備份(save | bgsave):

3、flushall命令:

四、RDB的備份恢復(fù):

五、RDB優(yōu)缺點:


以下配置以Redis-x64-3.2.100.zip為例,介紹下 RDB快照持久化?

一、RDB快照持久化 原理

1、單線程:?Redis 是單線程程序,這個線程要同時負(fù)責(zé)多個客戶端套接字的并發(fā)讀寫操作和內(nèi)存數(shù)據(jù)結(jié)構(gòu)的邏輯讀寫。在服務(wù)線上請求的同時,Redis 還需要進(jìn)行內(nèi)存快照,內(nèi)存快照要求 Redis 必須進(jìn)行文件 IO 操作,這意味著單線程同時在服務(wù)線上的請求還要進(jìn)行文件 IO 操作,文件 IO 操作會嚴(yán)重拖垮服務(wù)器請求的性能。還有個重要的問題是為了不阻塞線上的業(yè)務(wù),就需要邊持久化邊響應(yīng)客戶端請求。持久化的同時,內(nèi)存數(shù)據(jù)結(jié)構(gòu)還在改變,如果一個大型的 hash 字典正在持久化過程中,過來一個刪除請求如何處理?Redis 使用操作系統(tǒng)的多進(jìn)程?COW(Copy On Write)?機(jī)制來實現(xiàn)快照持久化。

2、fork(多進(jìn)程):Redis 在持久化時會調(diào)用 glibc 的函數(shù) fork 產(chǎn)生一個子進(jìn)程,快照持久化完全交給子進(jìn)程來處理,父進(jìn)程繼續(xù)處理客戶端請求。子進(jìn)程剛剛產(chǎn)生時,它和父進(jìn)程共享內(nèi)存里面的代碼段和數(shù)據(jù)段。這是 Linux 操作系統(tǒng)的機(jī)制,為了節(jié)約內(nèi)存資源,所以盡可能讓它們共享起來。在進(jìn)程分離的一瞬間,內(nèi)存的增長幾乎沒有明顯變化。

子進(jìn)程做數(shù)據(jù)持久化,它不會修改現(xiàn)有的內(nèi)存數(shù)據(jù)結(jié)構(gòu),它只是對數(shù)據(jù)結(jié)構(gòu)進(jìn)行遍歷讀取,然后序列化寫到磁盤中。但是父進(jìn)程不一樣,它必須持續(xù)服務(wù)客戶端請求,然后對內(nèi)存數(shù)據(jù)結(jié)構(gòu)進(jìn)行不間斷的修改。

這個時候就會使用操作系統(tǒng)的 COW 機(jī)制來進(jìn)行數(shù)據(jù)段頁面的分離。數(shù)據(jù)段是由很多操作系統(tǒng)的頁面組合而成,當(dāng)父進(jìn)程對其中一個頁面的數(shù)據(jù)進(jìn)行修改時,會將被共享的頁面復(fù)制一份分離出來,然后對這個復(fù)制的頁面進(jìn)行修改。這時子進(jìn)程相應(yīng)的頁面是沒有變化的,還是進(jìn)程產(chǎn)生時那一瞬間的數(shù)據(jù)。

隨著父進(jìn)程修改操作的持續(xù)進(jìn)行,越來越多的共享頁面被分離出來,內(nèi)存就會持續(xù)增長。但是也不會超過原有數(shù)據(jù)內(nèi)存的 2 倍大小。另外一個 Redis 實例里冷數(shù)據(jù)占的比例往往是比較高的,所以很少會出現(xiàn)所有的頁面都會被分離,被分離的往往只有其中一部分頁面。子進(jìn)程因為數(shù)據(jù)沒有變化,它能看到的內(nèi)存里的數(shù)據(jù)在進(jìn)程產(chǎn)生的一瞬間就凝固了,再也不會改變,這也是為什么 Redis 的持久化叫「快照」的原因。接下來子進(jìn)程就可以非常安心的遍歷數(shù)據(jù)了進(jìn)行序列化寫磁盤了。

redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化,redis,redis

這里之需要需要通知父線程,是因為父線程要做個記錄,保留最后一次持久化的時間。

二、RDB快照持久化配置(redis.conf):

1、指定備份文件的名稱:在redis.conf中,可以修改rdb備份文件的名稱,默認(rèn)為dump.rdb。

redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化,redis,redis

2、指定備份文件存放的目錄:

在redis.conf中,rdb文件的保存的目錄是可以修改的,默認(rèn)為Redis啟動命令所在的目錄

??redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化,redis,redis

??redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化,redis,redis

?3、stop-writes-on-bgsave-error:當(dāng)磁盤滿時,是否關(guān)閉redis的寫操作,stop-writes-on-bgsave-error用來指定當(dāng)redis無法寫入磁盤的話,是否直接關(guān)掉redis的寫操作,
推薦yes。默認(rèn)配置如下:

redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化,redis,redis

4、rdb備份是否開啟壓縮:對于存儲到磁盤中的rdb快照文件,可以設(shè)置是否進(jìn)行壓縮,如果是的話,redis會采用LZF算法進(jìn)行壓縮。如果你不想消耗CPU來進(jìn)行壓縮的話,可以設(shè)置為關(guān)閉此功能,推薦yes。

redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化,redis,redis

5、rdbchecksum:是否檢查rdb備份文件的完整性。存儲快照后,還可以讓redis使用CRC64算法來進(jìn)行數(shù)據(jù)校驗,但是這樣做會增加大約10%的性能消耗,如果希望獲取最大的性能提升,可以關(guān)閉此功能。推薦yes。

redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化,redis,redis

三、觸發(fā)RDB備份:

有幾下幾種方法

1、自動備份,需配置備份規(guī)則:

可在redis.conf中配置自動備份的規(guī)則,save用來配置備份的規(guī)則,save格式如下:

save 秒鐘 寫操作次數(shù)

如設(shè)置20秒內(nèi)有最少有3次key發(fā)生變化則進(jìn)行備份:save 20 3。?

默認(rèn)規(guī)則為:默認(rèn)是1分鐘內(nèi)修改了1萬次,或5分鐘內(nèi)需修改了10次,或30分鐘內(nèi)修改了1次。

redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化,redis,redis

2、手動執(zhí)行命令備份(save | bgsave):

有2個命令可以觸發(fā)備份,

(1)save:save時只管保存,其他不管,全部阻塞,手動保存,不建議使用。

(2)bgsave:redis會在后臺異步進(jìn)行快照操作,快照同時還可以響應(yīng)客戶端情況。

可以通過?lastsave?命令獲取最后一次成功生成快照的時間(獲取到的是時間戳)。

動態(tài)停止RDB:?redis-cli config set save ""?#save后給空值,表示禁用保存策略。

3、flushall命令:

執(zhí)行flushall命令,也會產(chǎn)生dump.rdb文件,但里面是空的,無意義。

四、RDB的備份恢復(fù)步驟:

1、先通過CONFIG GET dir查詢rdb文件的目錄,這其實就是查的redis.conf文件當(dāng)中通過dir設(shè)置的目錄

2、停止Redis
3、拷貝遷移的redis備份文件(dump.rdb)到CONFIG GET dir查詢出來的指定目錄下。

cp dump.rdb dump.rdb

4、重新啟動redis服務(wù)

五、RDB優(yōu)缺點:

1、優(yōu)點:

(1)適合大規(guī)模數(shù)據(jù)恢復(fù)

(2)對數(shù)據(jù)完整性和一致性要求不高更適合使用

(3)節(jié)省磁盤空間

(4)RDB是一個緊湊壓縮的二進(jìn)制文件,Redis加載RDB恢復(fù)數(shù)據(jù)遠(yuǎn)遠(yuǎn)快于AOF的方式

2、缺點:

(1)Fork的時候,內(nèi)存中的數(shù)據(jù)會被克隆一份,大致2倍的膨脹,需要考慮

(2)雖然Redis在fork的時候使用了寫時拷貝技術(shù),但是如果數(shù)據(jù)龐大時還是比較消耗性能

(3)RDB方式數(shù)據(jù)沒辦法做到實時持久化/秒級持久化,在備份周期在一定間隔時間做一次備份,所以如果Redis意外down的話,就會丟失最后一次快照后所有修改

(4)RDB文件使用特定二進(jìn)制格式保存,Redis版本演進(jìn)過程中有多個格式的RDB版本,存在老版本Redis服務(wù)無法兼容新版RDB格式的問題

六、RBD簡單演示:

(1)打開一個redis連接,設(shè)置key

redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化,redis,redis

(2)刪除生成的rbd快照文件(我這里重命名了)

redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化,redis,redis

(3)重啟redis,再次打開一個客戶端,發(fā)現(xiàn)key不存在了

redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化,redis,redis

(4)還原之前的rbd文件,再次重啟redis,并打開連接,key恢復(fù)了

redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化,redis,redis文章來源地址http://www.zghlxwxcb.cn/news/detail-796982.html

到了這里,關(guān)于redis原理(四)數(shù)據(jù)安全之?dāng)?shù)據(jù)持久化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Redis進(jìn)階底層原理- 持久化

    Redis進(jìn)階底層原理- 持久化

    Redis-Fork、RDF、RDB底層原理

    2024年02月16日
    瀏覽(30)
  • Redis 事務(wù)、持久化、復(fù)制原理分析

    Redis是一種高性能的鍵值存儲數(shù)據(jù)庫,同時也是一種基于內(nèi)存的數(shù)據(jù)結(jié)構(gòu)存儲系統(tǒng),它可以用作數(shù)據(jù)庫、緩存和消息中間件。 Redis的事務(wù)機(jī)制提供了一種原子性地執(zhí)行多個命令的方式,在同時發(fā)生多個 Redis 命令時,可以使用事務(wù)來確保它們都會被執(zhí)行。 Redis的持久化機(jī)制可以

    2024年02月13日
    瀏覽(22)
  • redis原理 3:未雨綢繆 —— 持久化

    redis原理 3:未雨綢繆 —— 持久化

    redis原理 3:未雨綢繆 —— 持久化 Redis 的數(shù)據(jù)全部在內(nèi)存里,如果突然宕機(jī),數(shù)據(jù)就會全部丟失,因此必須有一種機(jī)制來保證 Redis 的數(shù)據(jù)不會因為故障而丟失,這種機(jī)制就是 Redis 的持久化機(jī)制。 Redis 的持久化機(jī)制有兩種,第一種是快照,第二種是 AOF 日志。快照是一次全量

    2024年02月14日
    瀏覽(21)
  • 【2023】Redis數(shù)據(jù)持久化

    Redis是基于內(nèi)存的NoSQL數(shù)據(jù)庫,讀寫速度很快,但是存儲在內(nèi)存中的Redis數(shù)據(jù)會在服務(wù)器重啟后丟失。 然而在一些場景中,需要長久的保存數(shù)據(jù),所以需要把內(nèi)存中的數(shù)據(jù)持久化的保存在硬盤中。 Redis持久化提供兩種方式: 1??:AOF(Append Only File)只追加文件 2??:RDB(

    2024年02月10日
    瀏覽(26)
  • Redis 7 教程 數(shù)據(jù)持久化

    Redis 7 教程 數(shù)據(jù)持久化

    ????????RDB 持久化以指定的時間間隔執(zhí)行數(shù)據(jù)集的時間點快照 。 ? ? ? ? 把某一時刻的數(shù)據(jù)和狀態(tài)以文件的形式寫到磁盤上,即使出現(xiàn)故障宕機(jī),快照文件也不會丟失,數(shù)據(jù)的可靠性得到保證。快照文件就是RDB(Redis DataBase)文件(dump.rdb) ? ? ? ? ?在指定的時間間隔內(nèi)將

    2024年02月11日
    瀏覽(23)
  • Redis服務(wù)端優(yōu)化(持久化配置、慢查詢、命令及安全配置、內(nèi)存配置)

    Redis服務(wù)端優(yōu)化(持久化配置、慢查詢、命令及安全配置、內(nèi)存配置)

    漏洞:Redis未授權(quán)訪問配合SSH key文件利用分析-騰訊云開發(fā)者社區(qū)-騰訊云 (tencent.com) 漏洞出現(xiàn)的核心的原因有以下幾點 Redis未設(shè)置密碼 利用了Redis的config set命令動態(tài)修改Redis配置 使用了Root賬號權(quán)限啟動Redis 查看客戶端緩沖信息的命令 info clients client list

    2024年01月23日
    瀏覽(35)
  • docker安裝redis并持久化數(shù)據(jù)

    docker安裝redis并持久化數(shù)據(jù)

    這里是沒有任何的密碼 密碼是剛才設(shè)置的Maqiang

    2024年02月11日
    瀏覽(27)
  • Redis---數(shù)據(jù)持久化之RDB與AOF

    Redis 數(shù)據(jù)庫文件,全稱 Redis DataBase,數(shù)據(jù)持久化方式之一,數(shù)據(jù)持久化 默認(rèn)方式 ,按照指定時間間隔,將內(nèi)存中的數(shù)據(jù)及快照寫入硬盤 定義RDB文件名 dbfilename \\\"dump.rdb\\\" RDB指dump.rdb文件; redis數(shù)據(jù)每次存盤,如果不指定持久化的方式,數(shù)據(jù)就會默認(rèn)存入dump.rdb文件中 數(shù)據(jù)從內(nèi)存

    2023年04月19日
    瀏覽(21)
  • 非關(guān)系型數(shù)據(jù)庫之Redis 持久化

    非關(guān)系型數(shù)據(jù)庫之Redis 持久化

    目錄 一 Redis 高可用? 1redis高可用技術(shù) 2 持久化的功能: 3 Redis 提供兩種方式進(jìn)行持久化: 二 持久化之RDB 1. 觸發(fā)條件 (1)手動觸發(fā) (2)自動觸發(fā) (3)其他自動觸發(fā)機(jī)制 2. 執(zhí)行流程 3. 啟動時加載 三 AOF 持久化之AOF 1. 開啟AOF配置 2. 執(zhí)行流程 AOF的執(zhí)行流程包括: (1)命令

    2024年04月10日
    瀏覽(28)
  • 騰訊數(shù)據(jù)持久化方案MMKV原理分析

    騰訊數(shù)據(jù)持久化方案MMKV原理分析

    提到數(shù)據(jù)持久化存儲的方案,Android提供的手段有很多,在項目中常用的就是SharedPreference(簡稱SP),但是SP使用雖然簡單,但是存在缺陷: 寫入速度慢,尤其在主線程頻繁執(zhí)行寫入操作易導(dǎo)致卡頓或者ANR; 不支持跨進(jìn)程 因此針對這種缺陷,我們往往會換其他的技術(shù)方案,例如

    2024年02月07日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包