溫馨提示×

溫馨提示×

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

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

Redis持久化機制實現(xiàn)原理和流程是什么

發(fā)布時間:2023-04-26 10:02:52 來源:億速云 閱讀:93 作者:zzz 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“Redis持久化機制實現(xiàn)原理和流程是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Redis持久化機制實現(xiàn)原理和流程是什么”吧!

Redis持久化機制實現(xiàn)原理是什么?

持久化:Redis是內(nèi)存數(shù)據(jù)庫,數(shù)據(jù)都是存儲在內(nèi)存中,為了避免進程退出導(dǎo)致數(shù)據(jù)的永久丟失,需要定期將Redis中的數(shù)據(jù)以某種形式(數(shù)據(jù)或命令)從內(nèi)存保存到硬盤;當(dāng)下次Redis重啟時,利用持久化文件實現(xiàn)數(shù)據(jù)恢復(fù)。除此之外,為了進行災(zāi)難備份,可以將持久化文件拷貝到一個遠程位置

持久化流程是什么?

既然redis的數(shù)據(jù)可以保存在磁盤上,那么這個流程是什么樣的呢?

要有下面五個過程:

(1)客戶端向服務(wù)端發(fā)送寫操作(數(shù)據(jù)在客戶端的內(nèi)存中)。

(2)數(shù)據(jù)庫服務(wù)端接收到寫請求的數(shù)據(jù)(數(shù)據(jù)在服務(wù)端的內(nèi)存中)。

(3)服務(wù)端調(diào)用write這個系統(tǒng)調(diào)用,將數(shù)據(jù)往磁盤上寫(數(shù)據(jù)在系統(tǒng)內(nèi)存的緩沖區(qū)中)。

(4)操作系統(tǒng)將緩沖區(qū)中的數(shù)據(jù)轉(zhuǎn)移到磁盤控制器上(數(shù)據(jù)在磁盤緩存中)。

(5)磁盤控制器將數(shù)據(jù)寫到磁盤的物理介質(zhì)中(數(shù)據(jù)真正落到磁盤上)。

這5個過程是在理想條件下一個正常的保存流程,但是在大多數(shù)情況下,我們的機器等等都會有各種各樣的故障,這里劃分了兩種情況:

Redis數(shù)據(jù)庫發(fā)生故障,只要在上面的第三步執(zhí)行完畢,那么就可以持久化保存,剩下的兩步由操作系統(tǒng)替我們完成;操作系統(tǒng)發(fā)生故障,必須上面5步都完成才可以。

為應(yīng)對以上5步操作,redis提供了兩種不同的持久化方式:RDB(Redis DataBase)和AOF(Append Only File)

RDB的快照、AOF的重寫都需要fork,這是一個重量級操作,會對Redis造成阻塞。因此為了不影響Redis主進程響應(yīng),我們需要盡可能降低阻塞。

1.降低fork的頻率,比如可以手動來觸發(fā)RDB生成快照、與AOF重寫;

2.控制Redis最大使用內(nèi)存,防止fork耗時過長;

3.使用更牛逼的硬件;

4.合理配置Linux的內(nèi)存分配策略,避免因為物理內(nèi)存不足導(dǎo)致fork失敗

線上實踐經(jīng)驗:

1.如果Redis中的數(shù)據(jù)并不是特別敏感或者可以通過其它方式重寫生成數(shù)據(jù),可以關(guān)閉持久化,如果丟失數(shù)據(jù)可以通過其它途徑補回;

2.自己制定策略定期檢查Redis的情況,然后可以手動觸發(fā)備份、重寫數(shù)據(jù);

3.可以加入主從機器,利用一臺從機器進行備份處理,其它機器正常響應(yīng)客戶端的命令;

4.RDB持久化與AOF持久化可以同時存在,配合使用。

到此,相信大家對“Redis持久化機制實現(xiàn)原理和流程是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI