Redis持久化--RDB

      網友投稿 750 2025-03-31

      Redis 提供了2個不同形式的持久化方式。


      RDB Redis DataBase

      AOF A ppend Of File

      Redis持久化分為RDB持久化和AOF持久化:前者將當前數據保存到硬盤,后者則是將每次執行的寫命令保存到硬盤(類似于MySQL的binlog);由于AOF持久化的實時性更好,即當進程意外退出時丟失的數據更少,因此AOF是目前主流的持久化方式, 不過RDB持久化仍然有其用武之地。

      RDB

      在指定的時間間隔內將內存中的數據集快照寫入磁盤,也就是行話講的snapshot快照,它恢復是將快照文件直接讀到內存。

      Redis持久化--RDB

      RDB持久化是將當前進程中的數據生成快照保存到硬盤(因此也稱作快照持久化),保存的文件后綴是rdb;當Redis重新啟動時,可以讀取快照文件恢復數據。

      當前時刻內存中的數據寫到磁盤中。

      備份是如何執行的

      Redis會單獨創建(fork)一個子進程來進行持久化,會先將數據寫入到 一個臨時文件中,待持久化過程都結束了,再用這個臨時文件替換上次持久化好的文件。 整個過程中,主進程是不進行任何IO操作的,這就確保了極高的性能 如果需要進行大規模數據的恢復,且對于數據恢復的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺點是最后一次持久化后的數據可能丟失。

      Fork

      的作用是復制一個與當前進程一樣的進程。新進程的所有數據(變量、環境變量、程序計數器等) 數值都和原進程一致,但是是一個全新的進程,并作為原進程的子進程(內存會暫時性的增加一倍)

      在Linux程序中,fork()會產生一個和父進程完全相同的子進程,但子進程在此后多會exec系統調用,出于效率考慮,Linux中引入了“寫時復制技術”

      l 一般情況父進程和子進程會共用同一段物理內存,只有進程空間的各段的內容要發生變化時,才會將父進程的內容復制一份給子進程。

      RDB持久化流程

      dump.rdb文件

      在redis.conf中配置文件名稱,默認為dump.rdb

      配置位置

      rdb文件的保存路徑,也可以修改。默認為Redis啟動時命令行所在的目錄下

      想要修改的話需要修改,redis.config 中的dir "/myredis/"

      如何觸發RDB快照;保持策略

      配置文件中默認的快照配置

      命令 save VS bgsave

      save :save時只管保存,其它不管,全部阻塞。手動保存。不建議。

      bgsave:Redis會在后臺異步進行快照操作, 快照同時還可以響應客戶端請求。

      可以通過lastsave 命令獲取最后一次成功執行快照的時間

      flushall命令

      執行flushall命令,也會產生dump.rdb文件,但里面是空的,無意義

      SNAPSHOTTING快照的配置項

      Save

      格式:save 秒鐘 寫操作次數

      RDB是整個內存的壓縮過的Snapshot,RDB的數據結構,可以配置復合的快照觸發條件,

      默認是1分鐘內改了1萬次,或5分鐘內改了10次,或15分鐘內改了1次。

      禁用

      不設置save指令,或者給save傳入空字符串

      stop-writes-on-bgsave-error

      當Redis無法寫入磁盤的話,直接關掉Redis的寫操作。推薦yes.

      rdbcompression 壓縮文件

      對于存儲到磁盤中的快照,可以設置是否進行壓縮存儲。如果是的話,redis會采用LZF算法進行壓縮。

      如果你不想消耗CPU來進行壓縮的話,可以設置為關閉此功能。推薦yes.

      rdbchecksum 檢查完整性

      在存儲快照后,還可以讓redis使用CRC64算法來進行數據校驗,

      但是這樣做會增加大約10%的性能消耗,如果希望獲取到最大的性能提升,可以關閉此功能

      推薦yes.

      rdb的備份

      先通過config get dir 查詢rdb文件的目錄

      將*.rdb的文件拷貝到別的地方

      rdb的恢復

      u 關閉Redis

      u 先把備份的文件拷貝到工作目錄下cp dump2.rdb dump.rdb

      u 啟動Redis, 備份數據會直接加載

      優勢

      l 適合大規模的數據恢復

      l 對數據完整性和一致性要求不高更適合使用

      l 節省磁盤空間

      l 恢復速度快

      劣勢

      Fork的時候,內存中的數據被克隆了一份,大致2倍的膨脹性需要考慮

      雖然Redis在fork時使用了寫時拷貝技術,但是如果數據龐大時還是比較消耗性能。

      在備份周期在一定間隔時間做一次備份,所以如果Redis意外down掉的話,就會丟失最后一次快照后的所有修改。

      如何停止

      動態停止RDB:redis-cli config set save ""#save后給空值,表示禁用保存策略

      小總結

      Redis 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:關閉Excel2013中的“保護視圖”功能的方法(關閉excel受保護的視圖)
      下一篇:四種excel個人所得稅的計算方法全給你
      相關文章
      亚洲国产精品无码久久SM| 亚洲天堂中文字幕在线| 自拍偷自拍亚洲精品被多人伦好爽| 日韩国产精品亚洲а∨天堂免| wwwxxx亚洲| 亚洲H在线播放在线观看H| 亚洲a级片在线观看| 亚洲天堂一区二区三区四区| 亚洲美女精品视频| 亚洲精品视频在线免费| 亚洲精品免费在线| 亚洲国产精品线观看不卡| 亚洲欧洲日产v特级毛片| 亚洲一级黄色大片| 久久亚洲精品专区蓝色区| 亚洲卡一卡二卡乱码新区| 亚洲影院天堂中文av色| 亚洲heyzo专区无码综合| 国产精品手机在线亚洲| www.亚洲色图.com| 国产成人麻豆亚洲综合无码精品| 亚洲色欲一区二区三区在线观看| 亚洲日韩aⅴ在线视频| 亚洲成AV人片在线观看WWW| 久久亚洲AV无码精品色午夜麻| 亚洲国产精品婷婷久久| 亚洲色欲www综合网| 亚洲国产午夜精品理论片| 亚洲av乱码一区二区三区| 亚洲精品蜜夜内射| 亚洲精品成人在线| 亚洲精品午夜无码专区| 亚洲人成网www| 亚洲人配人种jizz| 亚洲av综合av一区二区三区 | 久久夜色精品国产噜噜亚洲AV| 久久久久亚洲精品日久生情| 亚洲va在线va天堂va手机| 亚洲aⅴ无码专区在线观看| 亚洲精品无码久久久| 亚洲成AV人片在线观看无码|