今天小編給大家分享的是關(guān)于Redis持久化 中的快照方式(RDB)介紹,很多人都不太了解,今天小編為了讓大家更加了解Redis持久化,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會有所收獲的哦。
Redis 的讀寫都是在內(nèi)存中,所以它的性能較高,但在內(nèi)存中的數(shù)據(jù)會隨著服務(wù)器的重啟而丟失,為了保證數(shù)據(jù)不丟失,我們需要將內(nèi)存中的數(shù)據(jù)存儲到磁盤,以便 Redis 重啟時能夠從磁盤中恢復(fù)原有的數(shù)據(jù),而整個過程就叫做 Redis 持久化。
Redis 持久化也是 Redis 和 Memcached 的主要區(qū)別之一,因為 Memcached 是不具備持久化功能的。
Redis 持久化擁有以下三種方式:
因為每種持久化方案,都有特定的使用場景,讓我們先從 RDB 持久化說起吧。
RDB(Redis DataBase)是將某一個時刻的內(nèi)存快照(Snapshot),以二進制的方式寫入磁盤的過程。
RDB 的持久化觸發(fā)方式有兩類:一類是手動觸發(fā),另一類是自動觸發(fā)。
手動觸發(fā)持久化的操作有兩個: save
和 bgsave
,它們主要區(qū)別體現(xiàn)在:是否阻塞 Redis 主線程的執(zhí)行。
在客戶端中執(zhí)行 save
命令,就會觸發(fā) Redis 的持久化,但同時也是使 Redis 處于阻塞狀態(tài),直到 RDB 持久化完成,才會響應(yīng)其他客戶端發(fā)來的命令,所以在生產(chǎn)環(huán)境一定要慎用。
save
命令使用如下:
從圖片可以看出,當(dāng)執(zhí)行完 save
命令之后,持久化文件 dump.rdb
的修改時間就變了,這就表示 save
成功的觸發(fā)了 RDB 持久化。
save
命令執(zhí)行流程,如下圖所示:
bgsave(background save)既后臺保存的意思, 它和 save
命令大的區(qū)別就是 bgsave
會 fork() 一個子進程來執(zhí)行持久化,整個過程中只有在 fork() 子進程時有短暫的阻塞,當(dāng)子進程被創(chuàng)建之后,Redis 的主進程就可以響應(yīng)其他客戶端的請求了,相對于整個流程都阻塞的 save
命令來說,顯然 bgsave
命令更適合我們使用。bgsave
命令使用,如下圖所示:
bgsave
執(zhí)行流程,如下圖所示:
說完了 RDB 的手動觸發(fā)方式,下面來看如何自動觸發(fā) RDB 持久化?
RDB 自動持久化主要來源于以下幾種情況。
save m n
是指在 m 秒內(nèi),如果有 n 個鍵發(fā)生改變,則自動觸發(fā)持久化。
參數(shù) m 和 n 可以在 Redis 的配置文件中找到,例如,save 60 1
則表明在 60 秒內(nèi),至少有一個鍵發(fā)生改變,就會觸發(fā) RDB 持久化。
自動觸發(fā)持久化,本質(zhì)是 Redis 通過判斷,如果滿足設(shè)置的觸發(fā)條件,自動執(zhí)行一次 bgsave
命令。
注意:當(dāng)設(shè)置多個 save m n 命令時,滿足任意一個條件都會觸發(fā)持久化。
例如,我們設(shè)置了以下兩個 save m n 命令:
當(dāng) 60s 內(nèi)如果有 10 次 Redis 鍵值發(fā)生改變,就會觸發(fā)持久化;如果 60s 內(nèi) Redis 的鍵值改變次數(shù)少于 10 次,那么 Redis 就會判斷 600s 內(nèi),Redis 的鍵值是否至少被修改了一次,如果滿足則會觸發(fā)持久化。
flushall
命令用于清空 Redis 數(shù)據(jù)庫,在生產(chǎn)環(huán)境下一定慎用,當(dāng) Redis 執(zhí)行了 flushall
命令之后,則會觸發(fā)自動持久化,把 RDB 文件清空。
執(zhí)行結(jié)果如下圖所示:
在 Redis 主從復(fù)制中,當(dāng)從節(jié)點執(zhí)行全量復(fù)制操作時,主節(jié)點會執(zhí)行 bgsave
命令,并將 RDB 文件發(fā)送給從節(jié)點,該過程會自動觸發(fā) Redis 持久化。
合理的設(shè)置 RDB 的配置,可以保障 Redis 高效且穩(wěn)定的運行,下面一起來看 RDB 的配置項都有哪些?
RDB 配置參數(shù)可以在 Redis 的配置文件中找見,具體內(nèi)容如下:
# RDB 保存的條件 save 900 1 save 300 10 save 60 10000 # bgsave 失敗之后,是否停止持久化數(shù)據(jù)到磁盤,yes 表示停止持久化,no 表示忽略錯誤繼續(xù)寫文件。 stop-writes-on-bgsave-error yes # RDB 文件壓縮 rdbcompression yes # 寫入文件和讀取文件時是否開啟 RDB 文件檢查,檢查是否有無損壞,如果在啟動是檢查發(fā)現(xiàn)損壞,則停止啟動。 rdbchecksum yes # RDB 文件名 dbfilename dump.rdb # RDB 文件目錄 dir ./
其中比較重要的參數(shù)如下列表:
① save 參數(shù)
它是用來配置觸發(fā) RDB 持久化條件的參數(shù),滿足保存條件時將會把數(shù)據(jù)持久化到硬盤。
默認配置說明如下:
② rdbcompression 參數(shù)
它的默認值是 yes
表示開啟 RDB 文件壓縮,Redis 會采用 LZF 算法進行壓縮。如果不想消耗 CPU 性能來進行文件壓縮的話,可以設(shè)置為關(guān)閉此功能,這樣的缺點是需要更多的磁盤空間來保存文件。
③ rdbchecksum 參數(shù)
它的默認值為 yes
表示寫入文件和讀取文件時是否開啟 RDB 文件檢查,檢查是否有無損壞,如果在啟動是檢查發(fā)現(xiàn)損壞,則停止啟動。
Redis 中可以使用命令查詢當(dāng)前配置參數(shù)。查詢命令的格式為:config get xxx
,例如,想要獲取 RDB 文件的存儲名稱設(shè)置,可以使用 config get dbfilename
,執(zhí)行效果如下圖所示:
查詢 RDB 的文件目錄,可使用命令 config get dir
,執(zhí)行效果如下圖所示:
設(shè)置 RDB 的配置,可以通過以下兩種方式:
config set dir "/usr/data"
就是用于修改 RDB 的存儲目錄。注意:手動修改 Redis 配置文件的方式是全局生效的,即重啟 Redis 服務(wù)器設(shè)置參數(shù)也不會丟失,而使用命令修改的方式,在 Redis 重啟之后就會丟失。但手動修改 Redis 配置文件,想要立即生效需要重啟 Redis 服務(wù)器,而命令的方式則不需要重啟 Redis 服務(wù)器。
小貼士:Redis 的配置文件位于 Redis 安裝目錄的根路徑下,默認名稱為 redis.conf。
當(dāng) Redis 服務(wù)器啟動時,如果 Redis 根目錄存在 RDB 文件 dump.rdb,Redis 就會自動加載 RDB 文件恢復(fù)持久化數(shù)據(jù)。
如果根目錄沒有 dump.rdb 文件,請先將 dump.rdb 文件移動到 Redis 的根目錄。
驗證 RDB 文件是否被加載
Redis 在啟動時有日志信息,會顯示是否加載了 RDB 文件,我們執(zhí)行 Redis 啟動命令:src/redis-server redis.conf
,如下圖所示:
從日志上可以看出, Redis 服務(wù)在啟動時已經(jīng)正常加載了 RDB 文件。
小貼士:Redis 服務(wù)器在載入 RDB 文件期間,會一直處于阻塞狀態(tài),直到載入工作完成為止。
禁用持久化可以提高 Redis 的執(zhí)行效率,如果對數(shù)據(jù)丟失不敏感的情況下,可以在連接客戶端的情況下,執(zhí)行 config set save ""
命令即可禁用 Redis 的持久化,如下圖所示:
通過本文我們可以得知,RDB 持久化分為手動觸發(fā)和自動觸發(fā)兩種方式,它的優(yōu)點是存儲文件小,Redis 啟動時恢復(fù)數(shù)據(jù)比較快,缺點是有丟失數(shù)據(jù)的風(fēng)險。RDB 文件的恢復(fù)也很簡單,只需要把 RDB 文件放到 Redis 的根目錄,在 Redis 啟動時就會自動加載并恢復(fù)數(shù)據(jù)。
以上就是關(guān)于Redis持久化 中的快照方式(RDB)的簡略介紹,當(dāng)然詳細使用上面的不同還得要大家自己使用過才領(lǐng)會。如果想了解更多,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道哦!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前文章:關(guān)于Redis持久化中的快照方式(RDB)介紹-創(chuàng)新互聯(lián)
文章分享:http://chinadenli.net/article22/ddgsjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)站制作、自適應(yīng)網(wǎng)站、手機網(wǎng)站建設(shè)、企業(yè)建站、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)