<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Redis 學習筆記2:持久化

      1 什么是持久化

      Redis 支持RDB和AOF 兩種持久化機制,持久化功能有效地避免因進程退出造成的數據丟失問題。當下次重啟時利用之前持久化的數據快照文件即可實現數據恢復。

      配置文件:
      save 100 時間,單位是s,100s內修改1次就會做更新

      1.1 aof

      aof 實時存儲:

      1、aof的參數

      • dir 存儲路徑 /. 表示在哪里啟動,文件在哪里生成
      • appendonly:默認no,如果設置為yes,就打開了實時存儲
      • appendfilename 存儲文件的名字

      1.2 rdb

      rdb 定時存儲:

      1、rdb 的參數

      • dir 存儲路徑 /. 表示在哪里啟動,文件在哪里生成
      • rdbdfilename 存儲文件的名字

      2、風險:容易丟失數據;避免風險:使用aof 實時存儲

      3、如果數據沒有那么重要,可以使用rdb。

      2 RDB持久化

      把當前進程數據生成快照保存到硬盤的過程,觸發RDB持久化過程分為手動觸發和自動觸發。

      2.1 RDB 是什么

      RDB在指定的時間間隔內將內存中的數據集快照寫入磁盤。

      原理是redis 會單獨創建(fork)一個與當前進程一模一樣的子進程來進行持久化,這個子進程的所有數據(變量,環境變量,程序計數器等)都和原進程一模一樣,會先將數據寫入到一個臨時文件中,待持久化結束了,再用這個臨時文件替換上次持久化好的文件,是一個全量的過程。

      整個過程,主進程不進行任何的io操作,這就確保了極高的性能。

      問題1:這個持久化文件在哪里?
      rdb有兩個參數:

      • dir 存儲路徑 /. 表示在哪里啟動,文件在哪里生成
      • rdbdfilename 存儲文件的名字

      問題2:它什么時候fork子進程,或者什么時候觸發rdb持久化機制?

      1. shutdown時,如果沒有開啟aof,會觸發。
      2. 配置文件中默認的快照配置 :
      • save 900 1 900秒內執行1次增刪改 就會觸發rdb
      • save 300 10 300秒內執行10次增刪改 就會觸發rdb
      • save 60 10000 60秒內執行10000次增刪改 就會觸發rdb
      • 如果是集群的話,master就會把這些關掉(注釋掉)
      1. 執行命令 save 或者 bgsave :
      • save只保管,其他不管,全部阻塞;
      • bgsave redis會在后臺異步進行快照操作,同時可以響應客戶端的請求。
        1.執行flushall命令,但是里面是空的,無意義。(清空16個數據庫的數據)

      2.2 手動觸發

      手動觸發分別對應save和bgsave命令。

      • ·save命令:阻塞當前Redis服務器,直到RDB過程完成為止,對于內存 比較大的實例會造成長時間阻塞,線上環境不建議使用
      • ·bgsave命令:Redis進程執行fork操作創建子進程,RDB持久化過程由子進程負責,完成后自動結束。阻塞只發生在fork階段,一般時間很短。

      3 AOF持久化

      3.1 aof 是什么

      AOF持久化以日志的形式記錄服務器所處理的每一個寫、刪除操作,查詢操作不記錄,以文本的方式記錄,可以打開文件看到詳細的操作記錄。是以增量的方式進行持久化,即一點點的進行持久化,不是一下子把所有數據都記錄下來。

      原理是將redis的操作日志以追加的方式寫入文件,讀操作不記錄下來。

      如:set k1 1 寫到文件,再運行這個文件,所有寫操作都做一遍。

      問題1: 這個持久化文件在哪里?
      aof的參數:

      • dir 存儲路徑 /. 表示在哪里啟動,文件在哪里生成
      • appendonly:默認no,如果設置為yes,就打開了實時存儲
      • appendfilename 存儲文件的名字

      問題2: 觸發機制是什么?
      根據配置文件配置項:

      • no:表示等操作系統進行數據緩存同步到磁盤(快,持久化沒保證)
      • always:同步持久化,每次發生數據變更時,立即記錄到磁盤(慢,安全)
      • everysec:表示每秒同步一次(快,但是可能會丟失1s的數據)

      3.2 appendfile 文件說明:

      *2     說明下面有2組命令,*
      $6     代表長度為6,$
      SELECT
      0      代表數據放入0庫
      *3
      $3
      set
      $2
      kk
      $2
      vv
      

      3.3 aof 重寫機制

      1. 當AOF文件增長到一定大小的時候,redis能夠調用bgrewriteaof對日志文件進行重寫。當AOF文件大小的增長率大于該配置項時自動開啟重寫(這里指超過原大小的100%)。
      auto-aof-rewrite-percentage 100
      
      1. 當AOF文件增加到一定大小的時候,redis能夠調用bgrewriteaof對日志文件進行重寫。當AOF文件大小大于該配置項時自動開啟重寫。
      auto-aof-rewrite-min-size 64mb
      

      bgrewriteaof 是重寫的命令

      3.4 redis 4.0 后混合持久化機制

      1. 4.0 版本的混合持久化默認關閉,通過 auto-use-rdb-preamble 配置參數控制。
      • yes 表示開啟,no 表示禁用。
      1. 5.0 之后默認開啟。
        混合持久化是通過 bgrewriteaof 完成的,不同的是當開啟混合持久化時,fork出的子進程先將共享的內存副本全量的以RDB方式寫入aof文件,然后再將重寫緩沖區的增量命令以AOF方式寫入到文件,寫入完成后通知主進程更新統計信息,并將新的含有RDB格式和AOF格式的AOF文件替換舊的AOF文件。

      簡單說:新的AOF文件前半段是RDB格式的全量數據;后半段是AOF格式的增量數據。

      優點:混合持久化結合了RDB持久化和AOF持久化的優點,由于絕大部分都是RDB格式,加載速度快,同時結合AOF。增量的數據以AOF方式保存了,數據更少丟失。

      缺點:兼容性差,一旦開啟了混合持久化,在4.0之前版本都不能識別該aof文件,同時由于前部分是RDB格式,閱讀性比較差。

      4 AOF和RDB的總結

      1、redis提供了rdb持久化方案,為什么還要aof?

      優化數據丟失問題,rdb會丟失最后一次快照后的數據,aof丟失不會超過2s的數據。

      2、如果aof 和rdb同時存在,聽誰的?

      aof

      3、rdb和aof的優劣勢

      1 RDB:

      使用RDB好處:

      1. redis 數據庫只有這一個文件,方便備份,可以很容易將一個RDB文件移動到其他存儲介質上。
      2. RDB恢復大數據集的速度比AOF快。
      3. RDB可以最大化redis的性能:父進程在保存RDB文件時唯一要做的就是 fork 一個子進程,然后這個子進程就會處理接下來的所有保存工作,父進程無需執行任何磁盤 I/O 操作。

      使用RDB壞處:

      1. 需要盡量避免在服務區故障時丟失數據,雖然redis 允許設置不同的save point 來控制保存RDB文件的頻率,但是RDB文件需要保存整個數據集的狀態,所以它并不是一個輕松的操作。你可能會至少五分鐘才保存一次RDB文件,在這種情況下,一旦發生故障停機,就會丟失好幾分鐘的數據。
      2. 每次保存RDB的時候,Redis都要fork() 出一個子進程,并由子進程來進行實際的持久化工作。在數據集比較龐大地時候,fork()可能會非常耗時,造成服務器在某某毫秒內停止處理客戶端;如果數據集非常巨大,并且CPU時間非常緊張,那么這種停止時間甚至可能會長達整整一秒。雖然AOF重寫也需要進行 fork() ,但是無論AOF重寫的執行間隔有多長,數據的耐久性都不會有任何損失。

      總結RDB:
      rdb適合大規模數據恢復,對數據完整性和一致性不高,在一定間隔時間做一次備份,如果redis意外down機的話,就會丟失最后一次快照后的所有操作。

      2 AOF:

      使用AOF的好處:

      1. 讓redis變得非常耐久(nuch nore durable)
        2.AOF文件是一個只進行追加操作的日志文件(append only log),因此對AOF文件的寫入不需要進行 seek,即使日志因為某些原因而包含未寫入完整的命令(比如寫入時磁盤已滿,寫入中途停機等),redis-check-aof 工具也可以輕易地修復這種問題。
        3.redis 可以在AOF文件體積變得過大時,自動地在后臺對AOF進行重寫,重寫后的新 AOF 文件包含了恢復當前數據集所需要的最小命令集合。重寫操作絕對安全。
      2. AOF 文件有序地保存了對數據庫執行的所有的寫入操作,這些寫入操作以 Redis 協議的格式保存,因此 AOF 文件的內容非常容易被人讀懂,對文件進行分析也很輕松,導出AOF也很簡單。

      使用AOF的壞處:

      1. 對于相同的數據集來說,AOF 文件的體積通常要大于RDB文件的體積
      2. 根據所使用的 fsync 策略,AOF 的速度可能會慢于 RDB。
      3. 在處理巨大的寫入載入時,RDB可以提供更有保證的最大延遲時間。

      官方建議:兩種方式同時開啟,優先使用aof。

      4、性能建議(只針對單機版redis持久化做性能建議):

      1. 因為RDB文件只用作后備用途,只要15min備份一次就夠了,只保留 save 900 1 這條規則。
      2. 如果Enable AOF,好處就是在最惡劣情況下也只會丟失不超過2s的數據,啟動腳本較簡單,只load自己的aof文件就可以了。
      3. 代價一是帶來了持續的IO,二是AOF rewrite 的最后將rewrite過程中產生的新數據寫到新文件造成的阻塞幾乎不可避免。
      4. 只要硬盤許可,應該盡量減少AOF rewrite 頻率,AOF 重寫基礎可以設到5G以上。
      posted @ 2021-04-22 16:05  hqq的進階日記  閱讀(89)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久精品国产久精国产一老狼 | 五月婷婷中文字幕| 精品中文人妻中文字幕| 午夜福利偷拍国语对白| 国产情侣激情在线对白| 日本免费人成视频在线观看| 午夜成人无码免费看网站| 亚洲精品中文字幕无码蜜桃 | 久久这里只精品热免费99| 人妻少妇邻居少妇好多水在线| 免费人成自慰网站| 国产精品久久久久影院亚瑟| 亚洲国产精品一二三四五| 国产亚洲精品日韩香蕉网| 久久国产成人av蜜臀| 国产精品视频免费一区二区三区| 成在人线AV无码免观看| 浦东新区| 国产精品久久久久无码网站| 精品乱码一区二区三四五区| 甘孜| 精品av综合导航| 中国女人熟毛茸茸A毛片| 国产97色在线 | 免| 深夜放纵内射少妇| 成码无人AV片在线电影网站| A毛片终身免费观看网站| 欧洲精品亚洲精品日韩专区| 日本一区二区三区在线播放| 国产精品天干天干综合网| 久久综合97丁香色香蕉| 国产福利在线观看免费第一福利| 性欧美大战久久久久久久| 亚洲人成亚洲人成在线观看| 亚洲高清最新AV网站| 99中文字幕国产精品| 中文字幕无码不卡一区二区三区| 亚洲国产日韩一区三区| 康乐县| 高清无码爆乳潮喷在线观看| 国产一区在线播放av|