操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    我們都知道Redis是個內存數據庫,所有的數據都存儲在內存中。一旦服務器上Redis進程退出,數據庫中的數據就會丟失。

    持久化是做什么事呢?持久化簡單的理解就是將內存中的數據做個備份。Redis的持久化有兩種方法,即RDB持久化和AOF持久化。本文將會分兩部分介紹這兩種持久化方法,以及實現原理。

    一、RDB持久化

    Redis數據持久化是將內存中的數據保存到磁盤里,避免數據意外丟失。RDB持久化會生成一個RDB文件,這個RDB文件是一個經過壓縮的二進制文件。通過該文件可以還原出Redis數據庫中的數據。RDB的持久化可以手動執行,也可以根據服務器配置項定期自動執行。

    下面我們一起學習一下RDB文件是怎么創建的。有兩個命令可以創建RDB文件,一個是SAVE,另一個是。

    執行SAVE命令會阻塞Redis服務器進程,直到RDB文件創建完成為止,在服務器進程被阻塞期間,服務器不能處理任何命令請求。

    執行命令會派生出一個子進程,然后由子進程負責創建RDB文件,服務器父進程繼續處理命令請求。

    SAVE命令和命令的底層調用的函數都是同一個函數數據庫持久化什么意思,只不過SAVE命令是直接調用這個函數,而會fork()出子進程來調用這個函數。偽代碼如下:

    RDB文件的載入工作是在服務器啟動時自動執行的,只要Redis服務器在啟動時檢測到RDB文件存在,就會自動載入RDB文件。值得一提的是,Redis服務器在載入RDB文件的期間,會一直處于阻塞狀態,直到載入工作完成為止。

    命令在不阻塞服務器進程的情況下執行,所以Redis允許用戶通過設置服務器的save選項來讓服務器每隔一段時間自動執行一次命令。

    上面條件只要滿足其中一個,命令就會被執行:

    二、AOF持久化

    除了RDB持久化之外,Redis還提供了AOF持久化功能,兩者的實現方式有著很大的不同。RDB持久化是通過保存數據庫中的鍵值對來記錄數據庫狀態,而AOF持久化是通過保存Redis服務器所執行的寫命令來記錄記錄數據庫狀態。

    AOF持久化是如何實現的呢?AOF持久化分文三個步驟:命令追加、文件寫入、文件同步。

    Redis中默認執行的是RDB持久化,如何打開AOF持久化呢?我們先來看看AOF的配置項:

    ①:這個參數是AOF的開關,配置成yes可以打開AOF持久化機制。打開AOF機制后

    ②:我們知道Redis中有個事件循環,Redis在每個事件循環都會將aof緩沖區中的內容寫入到操作系統的內存緩沖區。這個參數就是來配置將內存緩沖區中的數據同步到硬盤上的AOF文件中的更新頻率,有、、no三個配置值。

    下面說說AOF文件的還原過程,我們知道AOF文件中存儲的是所有曾經執行過的寫命令,所以服務器只要讀入并重新執行一遍AOF文件里保存的寫命令,就可以還原服務器關閉之前的數據庫內容。

    同時為了解決在Redis運行過程中AOF文件越來越大數據庫持久化什么意思,Redis還提供了AOF重寫功能,關于AOF重寫原理在此不具體介紹,有興趣的我們可以私下討論。

    三、RDB和AOF區別和聯系,以及同時工作時的情況

    ①首先我們總結一下兩種方式的區別和聯系:

    RDB持久化:默認開啟;全量備份,一次性保存整個數據庫;體積小,數據恢復快;服務器異常時可能會丟失部分數據;SAVE操作會阻塞,不阻塞

    AOF持久化:默認關閉;增量備份,一次保存一個修改數據庫的命令;體積大,數據恢復慢;備份頻率可以自己設置;不會出現阻塞

    ②當RDB和AOF同時開始時:

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有