91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis的持久化怎么理解

發布時間:2021-12-18 15:21:23 來源:億速云 閱讀:145 作者:iii 欄目:云計算

這篇文章主要講解了“redis的持久化怎么理解”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“redis的持久化怎么理解”吧!

redis的持久化:

    概念:將內存中的數據保存到磁盤,在機器宕機或重啟時可以保證數據不丟失。
    
    說明:建議RDB和AOF同時開啟,若二者同時開啟,則redis在啟動時優先使用aof文件來恢復數據,若讀取aof文件失敗,則讀取rdb文件來恢復數據。

    RDB(Redis DataBase)
        概念:
            將內存中的數據進行快照并且存儲到磁盤上,即在指定目錄下生成一個dump.rdb文件。RDB是redis默認的持久化方式。
            redis啟動后可用通過讀取rdb文件,將數據再次載入到內存中,一般情況下1G的rdb文件載入到內存的時間大概為20~30秒。
            
        過程:把所有的數據都寫到一個臨時文件中,然后用這個臨時文件替換掉之前的rdb文件。
        
        觸發機制:
            手動觸發:
                save命令:阻塞Redis當前的進程,直到RDB過程完成為止。若實例占用的內存比較大,則會造成redis服務長時間的不可用。(不建議使用)
                bgsave命令:redis當前進程執行fork操作創建子進程,RDB持久化過程由子進程負責,父進程繼續接收并處理客戶端發出的請求。阻塞只發生在fork階段,一般時間很短。
                    注意:fork一個進程時,子進程占用的內存空間與父進程相同。
            自動觸發:
                達到配置的條件時,自動觸發bgsave命令。
                在執行shutdown命令后會自動觸發bgsave命令。
        
            配置文件redis.conf:

                # 設置觸發快照的條件(Will save the DB if both the given number of seconds and the given number of write operations against the DB occurred.)
                # 格式:save <seconds> <changes>
                save 900 1         # 900秒內,如果有1個以上(包括1個)的key被修改了,則觸發快照。
                save 300 10        # 300秒內,如果有10個以上(包括10個)的key被修改了,則觸發快照。
                save 60 10000    # 60秒內,如果有10000個以上(包括10000個)的key被修改了,則觸發快照。
                
                # RDB默認會開啟,關閉RDB方式的持久化
                save ""
                
                # 設置rdb文件的名稱
                dbfilename dump.rdb

                # 設置redis的工作目錄,即rdb文件、aof文件所在的目錄
                # The working directory.
                # The DB will be written inside this directory, with the filename specified above using the 'dbfilename' configuration directive.
                # The Append Only File will also be created inside this directory.
                dir ./
                
                # 設置rdb文件是否進行壓縮,默認為yes。注:壓縮rdb文件可以減少磁盤空間的占用,但是需要消耗額外的cpu。
                rdbcompression yes
    
        優點:適合大規模的數據恢復,且數據加載的速度比較快。
        缺點:無法做到數據實時的(秒級)持久化。故數據備份的完整性不高。

    AOF(Append Only File)
        概念:
            將發送到redis服務端的每一條寫操作都存儲到磁盤上,即在指定目錄下生成一個appendonly.aof文件,并且將每次的寫操作追加到aof文件的末尾。
            redis啟動后通過讀取aof文件,將aof文件中的寫操作依次再執行一遍,以此來達到數據恢復的效果。
        
        過程:命令寫入(append)到緩存區、將緩存區的數據同步到aof文件中(sync)、重新aof文件(rewrite)
            重寫aof文件:
                目的:去除數據的中間執行過程,保留最終數據的命令,可大大減小aof文件的大小,從而可以加快數據恢復的速度。
                過程:redis當前進程執行fork操作創建子進程(開銷等同于bgsave過程),子進程根據命令合并規則將內存中的數據寫入到新的AOF文件中,最后用新的aof文件替換掉現有的aof文件。
        
        觸發機制:
            手動觸發:
                BGREWRITEAOF
                若aof文件格式異常,則需要修復aof文件:redis-check-aof --fix appendonly.aof
            自動觸發:
                達到配置的條件時,自動觸發更新aof文件 或 重新aof文件 的操作。
        
        3)配置文件redis.conf:

            # AOF和RDB可以同時存在,AOF方式的持久化擁有更好的數據完整性和一致性。
            # AOF and RDB persistence can be enabled at the same time without problems. 
            # If the AOF is enabled on startup Redis will load the AOF, that is the file with the better durability guarantees.
    
            # 開啟AOF (AOF默認是關閉的appendonly no)
            appendonly yes
            
            # 設置觸發更新aof文件的條件
            # appendfsync always    # 同步持久化,即每次執行寫操作后都會去更新aof文件。數據完整性好,但是性能較差。
            appendfsync everysec    # 每秒同步一次,是AOP默認觸發更新日志的條件。
            # appendfsync no        # 不主動同步,由操作系統來決定什么時候同步(一般為30s),性能最好但是持久化得不到保障,故不推薦使用該配置。
            
            # 設置觸發重寫aof文件的條件,多個條件是"與"的關系。
            # redis在重寫aof文件后會將aof文件的大小記錄下來(若沒有重寫過aof文件,則這個大小默認是redis啟動時aof文件的大小)
            auto-aof-rewrite-percentage 100        # 當前aof文件的大小 超過 上一次重寫后記錄的大小 的 100%。
            auto-aof-rewrite-min-size 64mb        # 當前aof文件大于等于64mb。注一般不會設置的這么小,看情況設為ngb比較合理。
            
            # 設置aof文件的名稱
            # appendfilename appendonly.aof

            # 設置redis的工作目錄,即rdb文件、aof文件所在的目錄
            dir ./
            
        優點:可以做到數據實時的(秒級)持久化,故數據備份的完整性很高。
        缺點:AOF記錄的內容多,文件會越來越大,數據恢復也會越來越慢,故redis在AOF中引入了重寫aof文件的機制。

    持久化給redis帶來的開銷:
        概念:子進程在重寫RDB文件和重寫AOF文件時會消耗cpu、內存、硬盤等資源。
        
            cpu:子進程負責把進程內的數據分批寫入文件,這個過程屬于CPU密集操作,通常子進程對單核CPU利用率接近90%。
            
            內存:父進程fork子進程時,子進程默認占用的內存同父進程一樣。我們可以修改Linux內存分配的配置,避免物理內存不足導致fork進程失敗。
            
            硬盤:往rdb文件或aof文件中寫數據的過程中,磁盤io的壓力比較大。
                說明:開啟AOF的Redis在高流量寫入時,如果使用普通機械磁盤,寫入吞吐一般在100MB/s左右,這時Redis實例的瓶頸主要在AOF同步硬盤上。

        注意:redis實例不應該和其它對cpu、內存、硬盤敏感的服務混部。

感謝各位的閱讀,以上就是“redis的持久化怎么理解”的內容了,經過本文的學習后,相信大家對redis的持久化怎么理解這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

松溪县| 宜春市| 莲花县| 莱芜市| 万州区| SHOW| 宜兰县| 陇川县| 邛崃市| 霸州市| 丁青县| 大余县| 定日县| 泽州县| 田阳县| 历史| 偏关县| 日照市| 全州县| 杂多县| 巴里| 太保市| 峡江县| 正阳县| 沁阳市| 东平县| 清流县| 崇仁县| 东宁县| 襄垣县| 龙里县| 义马市| 大港区| 轮台县| 连州市| 巴林右旗| 镇原县| 五莲县| 大埔区| 霍山县| 宕昌县|