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

redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB

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

目錄

一、RDB快照持久化 原理

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

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

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

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

3、flushall命令:

四、RDB的備份恢復:

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


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

一、RDB快照持久化 原理

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

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

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

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

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

redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB,redis,redis

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

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

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

redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB,redis,redis

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

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

??redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB,redis,redis

??redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB,redis,redis

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

redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB,redis,redis

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

redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB,redis,redis

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

redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB,redis,redis

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

有幾下幾種方法

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

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

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

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

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

redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB,redis,redis

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

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

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

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

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

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

3、flushall命令:

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

四、RDB的備份恢復步驟:

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

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

cp dump.rdb dump.rdb

4、重新啟動redis服務

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

1、優(yōu)點:

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

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

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

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

2、缺點:

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

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

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

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

六、RBD簡單演示:

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

redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB,redis,redis

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

redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB,redis,redis

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

redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB,redis,redis

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

redis數(shù)據(jù)安全(二)數(shù)據(jù)持久化 RDB,redis,redis文章來源地址http://www.zghlxwxcb.cn/news/detail-809299.html

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

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

領支付寶紅包贊助服務器費用

相關文章

  • Redis - redis.windows.conf配置文件及RDB和AOF數(shù)據(jù)持久化方案

    Redis - redis.windows.conf配置文件及RDB和AOF數(shù)據(jù)持久化方案

    Redis的高性能是由于其將所有數(shù)據(jù)都存儲在了內(nèi)存中,為了使Redis在重啟之后仍能保證數(shù)據(jù)不丟失,需要將數(shù)據(jù)從內(nèi)存中同步到硬盤中,這一過程就是持久化。 Redis支持兩種方式的持久化,一種是RDB方式,一種是AOF方式??梢詥为毷褂闷渲幸环N或?qū)⒍呓Y(jié)合使用。 該機制是指

    2024年01月24日
    瀏覽(30)
  • Redis兩種持久化方案RDB持久化和AOF持久化

    Redis兩種持久化方案RDB持久化和AOF持久化

    Redis持久化 Redis有兩種持久化方案: RDB持久化 AOF持久化 1.1.RDB持久化 RDB全稱Redis Database Backup file(Redis數(shù)據(jù)備份文件),也被叫做Redis數(shù)據(jù)快照。簡單來說就是把內(nèi)存中的所有數(shù)據(jù)都記錄到磁盤中。當Redis實例故障重啟后,從磁盤讀取快照文件,恢復數(shù)據(jù)??煺瘴募Q為RDB文件

    2024年02月14日
    瀏覽(28)
  • 全面解析 Redis 持久化:RDB、AOF與混合持久化

    前言: 每次你在游戲中看到玩家排行榜,或者在音樂應用中瀏覽熱門歌單,有沒有想過這個排行榜是如何做到實時更新的?當然,依靠 Redis 即可做到。 在技術領域,我們經(jīng)常聽到 「鍵值存儲」 這個詞。但在 Redis 的世界里,這只是冰山一角。Redis 的對象,不僅僅是簡單的數(shù)據(jù)

    2024年03月10日
    瀏覽(33)
  • redis持久化之RDB

    redis持久化之RDB

    RDB(Redis DataBase):RDB 持久性以指定的時間間隔執(zhí)行數(shù)據(jù)集的時間點快照。 說人話:實現(xiàn)類似照片記錄效果的方式,把某一時刻的數(shù)據(jù)和狀態(tài)以文件的形式寫到磁盤上,也就是快照,恢復時再將硬盤快照文件直接讀回到內(nèi)存里。 這樣一來,即使故障宕機,快照文件也不會丟

    2024年02月04日
    瀏覽(20)
  • redis 持久化 RDB + AOF

    redis 持久化 RDB + AOF

    RDB(Redis DataBase)和AOF(Append Only File) RDB,簡而言之,就是在不同的時間點,將redis存儲的數(shù)據(jù)生成快照并存儲到磁盤等介質(zhì)上 AOF,那就是將redis執(zhí)行過的所有寫指令記錄下來,在下次redis重新啟動時,只要把這些寫指令從前到后再重復執(zhí)行一遍,就可以實現(xiàn)數(shù)據(jù)恢復了。

    2024年02月03日
    瀏覽(26)
  • 【Redis】—— Redis的RDB持久化機制

    【Redis】—— Redis的RDB持久化機制

    ?????????????????????????????????????????????????????????????????? ?? 【 R e d i s 】—— R e d i s 的 R D B 持久化機制 color{#FF1493}{【Redis】 —— Redis的RDB持久化機制} 【 R e d i s 】 —— R e d i s 的 R D B 持久化機制 ?? ????????? ?? 仰望天空

    2024年02月13日
    瀏覽(23)
  • Redis 持久化-RDB和 持久化-AOF 的詳細介紹以及區(qū)別

    Redis 持久化-RDB和 持久化-AOF 的詳細介紹以及區(qū)別

    在線文檔: https://redis.io/topics/persistence RDB(Redis DataBase) AOF(Append Of File) 在指定的時間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤, 也就Snapshot 快照,恢復時將快照文件讀到內(nèi)存 RDB 及其執(zhí)行流程 對上圖的解讀 具體流程如下: redis 客戶端執(zhí)行bgsave 命令或者自動觸發(fā)bgsave 命令;

    2024年02月09日
    瀏覽(32)
  • Redis 持久化RDB和AOF

    Redis 有兩種持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看總結(jié)。本章節(jié)通過配置文件,觸發(fā)快照的方式,恢復數(shù)據(jù)的操作,命令操作演示,優(yōu)缺點來學習 Redis 的重點知識 持久化 。 RDB 是 Redis 默認的持久化

    2024年02月14日
    瀏覽(22)
  • Redis_持久化(AOF、RDB)

    Redis_持久化(AOF、RDB)

    目前,redis的持久化主要應用AOF(Append Only File)和RDF兩大機制,AOF以日志的形式來記錄每個寫操作(增量保存),將redis執(zhí)行過的所有指令全部安全記錄下來(讀操作不記錄)。只許追加文件,但不可以改寫文件,redis啟動之初,會讀取該文件,重新構(gòu)建數(shù)據(jù)。 AOF默認不開啟

    2024年02月13日
    瀏覽(23)
  • Redis持久化(RDB和AOF)

    目錄 方式一:RDB 方式二:AOF AOF重寫可能出現(xiàn)的問題及解決方案 方式三:RDB-AOF混合持久化 Redis持久化 :Redis是基于內(nèi)存數(shù)據(jù)庫,宕機后和數(shù)據(jù)會消失,當Redis用作DB 時,DB數(shù)據(jù)要完整,所以一定要有一個完整的數(shù)據(jù)源文件,在系統(tǒng)啟動時,從這個完整的數(shù)據(jù)源中將數(shù)據(jù)load到

    2024年02月16日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包