當前位置:成語大全網 - 書法字典 - 堅持Redis的幾種方式——對RDB的深入分析

堅持Redis的幾種方式——對RDB的深入分析

Redis持久化也是Redis?memcached和Memcached的主要區別之壹,因為Memcached不是持久的。

1.堅持的幾種方式

Redis持久化有以下三種方式:

RDB,Redis數據庫)將某壹時刻的內存數據以二進制的方式寫入磁盤;

AOF(Append Only File),記錄所有的操作命令,並以文本的形式追加到文件中;

混合持久模式是繼Redis 4.0之後的壹種新模式,它結合了RDB和AOF的優點。寫的時候先把當前的數據以RDB的形式寫在文件的開頭,然後把後續的操作命令以AOF的形式保存,這樣不僅可以保證?雷迪斯?重啟速度也可以降低數據丟失的風險。

因為每個持久化方案都有特定的使用場景,所以讓我們從RDB開始?堅持。大家說說吧。

2.2簡介。RDB

RDB(Redis數據庫)是以二進制方式將某壹時刻的內存快照寫入磁盤的過程。

3.持續觸發器

RDB?持續觸發方式有兩種:壹種是手動觸發,壹種是自動觸發。

1)手動觸發

手動觸發持久化有兩個操作:保存?和bgsave,他們的主要區別是:是否屏蔽?雷迪斯?主線程的執行。

①保存?命令

在客戶端執行保存?命令,它會觸發Redis的持續性,但同時也會使Redis處於阻塞狀態,直到RDB?只有持久化完成後,它才會響應其他客戶端發送的命令,所以在生產環境中必須謹慎使用。

保存?該命令的用法如下:

從圖中可以看出,執行完畢的時候?保存?在命令之後,持久化文件dump.rdb?修改時間變了,表示保存?成功觸發?RDB堅持不懈。

保存?命令執行過程,如下圖所示:

② bgsave?命令

Bgsave(後臺保存)是後臺保存的意思,和save不壹樣?命令之間最大的區別是bgsave?fork()的壹個子流程將被用來執行持久化,整個流程中只有壹個臨時阻塞。創建子流程後,Redis的主流程可以響應其他客戶端的請求,相比整個流程是阻塞的?保存?很明顯是命令?bgsave?這個命令更適合我們使用。

bgsave?命令使用,如下圖所示:

bgsave?執行過程如下圖所示:

2)自動觸發

妳說完了嗎?RDB?手動觸發模式,我們來看看如何自動觸發。RDB?堅持

RDB?自動持久化主要來自以下幾種情況。

①保存m n

拯救m n?意思是如果n個鍵在m秒內改變,就會自動觸發持久化。

參數m?然後呢。n?是的,在哪裏?雷迪斯?比如存60 1?意味著在60秒內,至少有壹個鍵改變了,它就會觸發?RDB?堅持

自動觸發持續的本質是什麽?雷迪斯?通過判斷,如果滿足設定的觸發條件,就會自動執行壹次?bgsave?訂單。

註意:當設置了多個save m n命令時,滿足任何條件都會觸發持久性。

例如,我們設置以下兩個save m n命令:

節省60 10

節省600 1

如果Redis鍵值在60s內變化10次,就會觸發持續性。如果Redis的鍵值在60s內被修改的次數少於10次,那麽Redis會判斷Redis的鍵值是否在600s內至少被修改過壹次,如果滿足,就會觸發持久化。

②沖水

沖水閥?命令用於清空Redis數據庫,在生產環境中必須謹慎使用。Redis什麽時候執行flushall?在該命令之後,將觸發自動持久化。RDB的檔案是空的。

執行結果如下圖所示:

③主從同步觸發

在Redis主從復制中,當從節點執行全範圍復制操作時,主節點會執行bgsave?命令並將RDB文件發送到從屬節點,這將自動觸發Redis持久性。

4.配置說明

RDB的合理配置可以保證Redis的高效穩定運行。讓我們來看看RDB的配置項目。

RDB配置參數可以在?Redis配置文件,具體內容如下:

# RDB保存條件

節省900 1

節省300 10

節省60 10000

# bgsave失敗,是否停止將數據持久化到磁盤?yes表示停止持久化,no表示忽略錯誤並繼續寫文件。

bgsave時停止寫入-錯誤是

# RDB文件壓縮

RDB壓縮是

#讀寫文件時是否開啟RDB文件檢查,檢查是否有損壞,如果在啟動過程中發現損壞則停止啟動。

rdbchecksum是

# RDB文件名

dbfilename dump.rdb

# RDB文件目錄

導演。/

更重要的參數如下所示:

①保存參數

它用於配置觸發RDB持續條件的參數。當滿足存儲條件時,數據將被持久化到硬盤上。

默認配置描述如下:

Save 900 1:表示如果900秒內至少有1個鍵值發生變化,數據將被持久化到硬盤上;

Save 300 10:表示如果300秒內至少有10個鍵值發生變化,數據將被持久化到硬盤上;

保存60 10000:表示如果60秒內至少有10000個鍵值發生變化,數據將被持久化到硬盤上。

②RDB壓縮參數

它的默認值是yes?表示要打開RDB文件壓縮,Redis將使用LZF算法進行壓縮。如果不想為了文件壓縮而消耗CPU性能,可以設置關閉這個功能,缺點是需要更多的磁盤空間來保存文件。

③ rdbchecksum參數

它的默認值是yes?指示在讀寫文件時是否開啟RDB文件檢查,檢查是否有損壞,如果在啟動過程中發現損壞則停止啟動。

5.配置查詢

您可以使用命令查詢Redis中的當前配置參數。查詢命令的格式是:config get xxx。比如想獲取RDB文件的存儲名設置,可以使用config get dbfilename,執行效果如下圖所示:

要查詢RDB的文件目錄,可以使用config get dir命令,執行效果如下圖所示:

6.配置設置

您可以通過以下兩種方式設置RDB的配置:

手動修改Redis配置文件;

使用命令行設置,例如,使用?配置集目錄"/usr/data "?用於修改RDB的存儲目錄。

註意:手動修改Redis配置文件的方式全局有效,即重啟?雷迪斯?服務器設置參數不會丟失,但使用命令修改方法重啟Redis後會丟失。而是手動修改?雷迪斯?配置文件,要想立即生效需要重啟?雷迪斯?服務器,並且命令方法不需要重啟?雷迪斯?服務器。

提示:Redis?的配置文件位於?雷迪斯?在安裝目錄的根路徑下,默認名稱是redis.conf

7.RDB文件恢復

什麽時候?雷迪斯?服務器啟動時,如果Redis根目錄存在?RDB?文件dump.rdb,Redis會自動加載rdb文件來恢復持久數據。

如果沒有根目錄呢?Dump.rdb文件,請先放dump.rdb?該文件被移動到Redis的根目錄。

驗證?RDB?文件加載了嗎?

雷迪斯?啟動時有日誌信息,會顯示是否加載。RDB?文件,我們執行Redis啟動命令:src/redis-server redis.conf,如下圖所示:

從日誌中可以看出,當Redis服務啟動時,RDB文件已經正常加載。

提示:在加載RDB文件期間,Redis服務器將保持阻塞狀態,直到加載作業完成。

8.8的優缺點。RDB

1)RDB優勢

RDB的內容是二進制數據,占用內存更少更緊湊,更適合備份文件;

RDB對於災難恢復非常有用。它是壹個壓縮文件,可以傳輸到遠程服務器,以便更快地恢復Redis服務。

RDB可以更大程度的提高Redis的運行速度,因為Redis的主進程每次都會fork()壹個子進程將數據持久化到磁盤,Redis的主進程不會進行磁盤I/O等操作;

與AOF文件相比,RDB文件可以更快地重新啟動。

2)RDB的缺點

因為RDB只能在壹定的時間間隔內保存數據,如果中途意外終止Redis服務,會丟失壹段時間的Redis數據;

RDB經常需要fork()來使用子進程在磁盤上持久化它。如果數據集很大,fork()可能會很耗時,如果數據集很大,CPU性能很差,可能會導致Redis停止服務客戶端幾毫秒甚至壹秒。

9.禁用持久性

禁用持久性可以提高Redis的執行效率。如果您對數據丟失不敏感,可以在連接客戶端時執行配置集保存“”。命令來禁用Redis的持久性,如下圖所示:

10.摘要

從這篇文章我們可以知道,RDB?持續性可以分為手動觸發和自動觸發兩種方式。它的優點是存儲文件小,Redis?啟動時恢復數據更快,但存在丟失數據的風險。RDB?文件的恢復也很簡單,只需放?RDB?文件在哪裏?雷迪斯?的根目錄,在?雷迪斯?數據將在啟動時自動加載和恢復。

11.思考問題

如果呢?雷迪斯?服務器?CPU?職業太高,可能是什麽原因?歡迎大家在評論區寫下妳的答案。

12.正式致謝

blogs.com/ysocean/p/9114268.html

blogs.com/wdliu/p/9377278.html

堅持Redis的幾種方式——對RDB的深入分析

Label:默認情況下,該命令用於阻止復數開始以獲取日誌信息的紅色摘要。