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:默認情況下,該命令用於阻止復數開始以獲取日誌信息的紅色摘要。