設定 Azure Cache for Redis 實例的數據持續性
Redis 持續性 可讓您儲存儲存在快取實例中的數據。 如果發生硬體故障,快取實例會在回到在線時,與持續性檔案中的數據解除凍結。 保存數據的能力是提升快取實例持久性的重要方式,因為所有快取數據都會儲存在記憶體中。 如果快取節點關閉時發生失敗,可能會遺失數據。 持續性應該是使用 Azure Cache for Redis 的高可用性和災害復原 策略的關鍵部分。
警告
如果您在 進階版 層上使用持續性,請檢查記憶體帳戶在使用資料持續性功能之前是否已啟用虛刪除。 使用資料持續性搭配虛刪除會導致儲存成本變得非常高。 如需詳細資訊,請參閱 我是否應該啟用虛刪除?。
警告
企業和企業 Flash 層上的 AOF 持續性一律寫入選項設定為 2025 年 4 月 1 日淘汰。 已不再建議使用此選項具有顯著的效能限制。 建議改為使用每秒寫入選項或使用 RDB 持續性。
可用性範圍
層 | 基本、標準 | 進階 | Enterprise、Enterprise Flash |
---|---|---|---|
可用的 | No | Yes | 是 (預覽) |
Redis 中的數據持續性類型
您有兩個選項可保存 Azure Cache for Redis: Redis 資料庫 (RDB) 格式和 [僅附加檔案 ] (AOF) 格式:
- RDB 持續性 - 當您使用 RDB 持續性 時,Azure Cache for Redis 會以二進位格式保存快取的快照集。 快照集會儲存在 Azure 儲存體 帳戶中。 可設定的備份頻率會決定保存快照集的頻率。 如果發生同時停用主要和複本快取的災難性事件,則會使用最新的快照集自動重新建構快取。 深入瞭解 RDB 持續性的優點 和 缺點 。
- AOF 持續性 - 當您使用 AOF 持續性 時,Azure Cache for Redis 會將每個寫入作業儲存至記錄。 記錄檔會在 Azure 儲存體 帳戶中每秒至少儲存一次。 如果發生同時停用主要和復本快取的災難性事件,則會使用預存寫入作業自動重新建構快取。 深入瞭解 AOF 持續性的優點 和 缺點 。
Azure Cache for Redis 持續性功能是用來在數據遺失後自動還原至相同的快取。 RDB/AOF 儲存的數據檔無法匯入至新的快取或現有的快取。 若要跨快取行動數據,請使用匯 入和匯出 功能。 如需詳細資訊,請參閱 在 Azure Cache for Redis 中匯入和導出數據。
若要產生任何可新增至新快取的數據備份,您可以使用定期匯出數據的 PowerShell 或 CLI 撰寫自動化腳本。
先決條件與限制
持續性功能是用來將數據還原至數據遺失之後的相同快取。
- RDB/AOF 儲存的數據檔無法匯入至新的快取或現有的快取。 請改用 匯入/匯出 功能。
- 使用 被動異地復 寫或 主動異地復寫的快取不支持持續性。
- 在 進階版 層上,多個復本不支援 AOF 持續性。
- 在 進階版 層上,數據必須保存至與快取實例位於相同區域中的記憶體帳戶。
- 在 進階版 層上,如果受控識別用來連線到記憶體帳戶,則不同訂用帳戶中的記憶體帳戶可用來保存數據。
進階版 與企業層中的持續性差異
在 進階版 層上,數據會直接保存至您擁有和管理的 Azure 儲存體 帳戶。 Azure 儲存體 在保存數據時自動加密數據,但您也可以使用自己的金鑰進行加密。 如需詳細資訊,請參閱適用於 Azure 儲存體加密的客戶自控金鑰。
警告
如果您在 進階版 層上使用持續性,請檢查記憶體帳戶在使用資料持續性功能之前是否已啟用虛刪除。 使用資料持續性搭配虛刪除會導致儲存成本變得非常高。 如需詳細資訊,請參閱 我是否應該啟用虛刪除?。
在 Enterprise 和 Enterprise Flash 層上,數據會保存至直接連結至快取實例的受控磁碟。 無法設定或存取使用者的位置。 使用受控磁碟會增加持續性的效能。 磁碟預設會使用 Microsoft 受控金鑰 (MMK) 加密,但也可以使用客戶管理的密鑰 (CMK)。 如需詳細資訊,請參閱 管理數據加密。
如何使用 Azure 入口網站 設定數據持續性
如何使用 PowerShell 和 Azure CLI 設定數據持續性
管理數據加密
由於 Redis 持續性會建立待用數據,因此加密此數據對許多使用者而言非常重要。 加密選項會根據所使用的 Azure Cache for Redis 層而有所不同。
使用 進階版 層時,數據會直接從快取實例串流至起始持續性時 Azure 儲存體。 各種加密方法可以搭配 Azure 儲存體 使用,包括 Microsoft 管理的密鑰、客戶管理的金鑰,以及客戶提供的密鑰。 如需加密方法的相關信息,請參閱 Azure 儲存體 待用數據的加密。
使用 Enterprise 和 Enterprise Flash 層時,數據會儲存在掛接至快取實例的受控磁碟上。 根據預設,保存持續性數據的磁碟會使用 Microsoft 管理的密鑰來加密 OS 磁碟。 客戶管理的金鑰 (CMK) 也可用來控制數據加密。 如需指示,請參閱 企業層快 取上的加密。
持續性常見問題
下列清單包含 Azure Cache for Redis 持續性常見問題的解答。
- 我可以在先前建立的快取上啟用持續性嗎?
- 我可以同時啟用 AOF 和 RDB 持續性嗎?
- 持續性如何與異地復寫搭配運作?
- 我應該選擇哪一個持續性模型?
- 如果我已調整為不同的大小,而且在調整作業之前還原備份,會發生什麼情況?
- 我可以在兩個不同的快取之間使用相同的記憶體帳戶來保存嗎?
- 我是否需支付數據持續性中使用的記憶體費用
- RDB 和 AOF 持續性寫入 Blob 的頻率,以及我是否應該啟用虛刪除?
- 記憶體帳戶上的防火牆例外狀況會影響持續性
- 如何? 檢查我的記憶體帳戶是否已啟用虛刪除?
RDB 持續性
AOF 持續性
- 何時應該使用第二個記憶體帳戶?
- AOF 持續性會影響快取的輸送量、延遲或效能嗎?
- 如何移除第二個記憶體帳戶?
- 什麼是重寫,以及它如何影響我的快取?
- 啟用 AOF 調整快取時,我應該期待什麼?
- 我的 AOF 資料如何組織在記憶體中?
- 如果我有多個復本,是否可以啟用 AOF 持續性?
我可以在先前建立的快取上啟用持續性嗎?
是,您可以在快取建立和現有 進階版、企業或企業快取上設定持續性。
我可以同時啟用 AOF 和 RDB 持續性嗎?
否,您可以啟用 RDB 或 AOF,但不能同時啟用兩者。
持續性如何與異地復寫搭配運作?
如果您啟用數據持續性,則無法為您的快取啟用異地復寫。
我應該選擇哪一個持續性模型?
AOF 持續性會將每個寫入儲存至記錄,而這對輸送量有相當大的影響。 比較 AOF 與 RDB 持續性,這會根據設定的備份間隔儲存備份,對效能的影響最小。 如果您的主要目標是將數據遺失降至最低,請選擇 AOF 持續性,而且您可以處理快取的輸送量較低。 如果您想要在快取上維持最佳輸送量,但仍想要有數據復原的機制,請選擇 RDB 持續性。
- 深入瞭解 RDB 持續性的優點 和 缺點 。
- 深入瞭解 AOF 持續性的優點 和 缺點 。
如需使用 AOF 持續性時效能的詳細資訊,請參閱 AOF 持續性會影響快取的輸送量、延遲或效能嗎?
AOF 持續性會影響快取的輸送量、延遲或效能嗎?
AOF 持續性會影響輸送量。 AOF 會在主要和複本程式上執行,因此您會看到具有 AOF 持續性之快取的 CPU 和伺服器負載高於沒有 AOF 持續性的相同快取。 AOF 提供記憶體中數據的最佳一致性,因為每個寫入和刪除只會保存幾秒鐘的延遲。 取捨是 AOF 更需要大量計算。
只要 CPU 和伺服器負載都小於 90%,輸送量就會受到懲罰,但快取的運作正常,否則為 。 超過 90% 的 CPU 和伺服器負載,輸送量會降低很多,而且快取處理的所有命令延遲都會增加。 延遲會增加,因為 AOF 持續性會在主要和複本進程上執行、增加使用中節點上的負載,並將持續性放在數據的重要路徑上。
如果我已調整為不同的大小,而且在調整作業之前還原備份,會發生什麼情況?
針對 RDB 和 AOF 持續性:
- 如果您已調整為較大的大小,則沒有任何作用。
- 如果您已調整為較小的大小,而且您的自定義資料庫設定大於新大小的資料庫限制,則不會還原這些資料庫中的數據。 如需詳細資訊,請參閱 我的自定義資料庫設定是否在調整期間受到影響?
- 如果您已調整為較小的大小,而且在較小的大小中沒有足夠的空間來保存上次備份中的所有數據,則會在還原程式期間收回密鑰。 一般而言,密鑰會使用 allkeys-lru 收回原則收回。
我可以在兩個不同的快取之間使用相同的記憶體帳戶來保存嗎?
否,您必須針對不同的快取使用不同的記憶體帳戶。 每個快取都必須有自己的記憶體帳戶,才能設定持續性。
重要
使用個別的記憶體帳戶進行持續性,並在快取上執行定期匯出作業。
我是否需要支付數據持續性中使用的記憶體費用?
- 針對 進階版 快取,您必須針對所使用記憶體帳戶的定價模式所使用的記憶體付費。
- 針對 Enterprise 和 Enterprise Flash 快取,您不需要支付受控磁碟記憶體的費用。 價格中包括它。
RDB 和 AOF 持續性寫入 Blob 的頻率,以及我是否應該啟用虛刪除?
建議您避免在搭配 azure Cache for Redis 數據持續性與 進階版 層搭配使用時,在記憶體帳戶上啟用虛刪除。 RDB 和 AOF 持續性可以像每小時、每隔幾分鐘或每秒一樣頻繁地寫入 Blob。 此外,在記憶體帳戶上啟用虛刪除表示 Azure Cache for Redis 無法藉由刪除舊的備份數據來將記憶體成本降到最低。
虛刪除會隨著快取的典型數據大小而變得昂貴,而快取也會每秒執行寫入作業。 如需虛刪除成本的詳細資訊,請參閱 定價和計費。
我可以在建立快取之後變更 RDB 備份頻率嗎?
是,您可以使用 Azure 入口網站、CLI 或 PowerShell 來變更 RDB 持續性的備份頻率。
當我有 60 分鐘的 RDB 備份頻率時,備份之間為何有 60 分鐘以上的時間?
在先前的備份程式成功完成之前,RDB 持續性備份頻率間隔不會啟動。 如果備份頻率為 60 分鐘,且備份程式需要 15 分鐘才能完成,則下一個備份在上一次備份的開始時間之後 75 分鐘才會啟動。
建立新的備份時,舊的 RDB 備份會發生什麼事?
除了最近的一個備份之外,所有 RDB 持續性備份都會自動刪除。 此刪除可能不會立即發生,但較舊的備份不會無限期保存。 如果您使用 進階版 層進行持續性,且已針對記憶體帳戶開啟虛刪除,則會套用虛刪除設定,而現有的備份會繼續處於虛刪除狀態。
何時應該使用第二個記憶體帳戶?
當您認為快取上的設定作業高於預期時,請使用 AOF 持續性的第二個記憶體帳戶。 設定次要記憶體帳戶有助於確保您的快取無法達到記憶體頻寬限制。 此選項僅適用於 進階版 層快取。
如何移除第二個記憶體帳戶?
您可以將第二個記憶體帳戶設定為與第一個記憶體帳戶相同,以移除 AOF 持續性次要記憶體帳戶。 針對現有的快取,請從快取的 [資源] 功能表存取數據持續性。 若要停用 AOF 持續性,請選取 [已停用]。
什麼是重寫,以及它如何影響我的快取?
當 AOF 檔案變大時,重寫會自動排入快取上的佇列。 重寫會使用建立目前數據集所需的最少作業集來調整 AOF 檔案的大小。 在重寫期間,您可以預期更快達到效能限制,尤其是在處理大型數據集時。 當 AOF 檔案變大時,重寫頻率較低,但需要相當長的時間才會發生。
啟用 AOF 調整快取時,我應該期待什麼?
如果調整時的 AOF 檔案很大,則預期縮放作業會花費超過預期的時間,因為它會在調整完成之後重載檔案。
如需調整的詳細資訊,請參閱 如果我已調整為不同的大小,而且在調整作業之前還原備份,會發生什麼情況?
我的 AOF 資料如何組織在記憶體中?
當您使用 進階版 層時,儲存在 AOF 檔案中的數據會分割成每個分區的多個分頁 Blob。 根據預設,一半的 Blob 會儲存在主要記憶體帳戶中,而一半則儲存在次要記憶體帳戶中。 將數據分割成多個分頁 Blob 和兩個不同的記憶體帳戶會增加效能。
如果寫入快取的尖峰速率不高,則可能不需要此額外的效能。 在此情況下,可以移除次要記憶體帳戶組態。 所有的 AOF 檔案只會儲存在單一主要記憶體帳戶中。 下表顯示每個定價層所使用的分頁 Blob 總數:
進階層 | Blob |
---|---|
P1 | 每個分區8個 |
P2 | 每個分區 16 個 |
P3 | 每個分區 32 個 |
P4 | 每個分區 40 個 |
啟用叢集時,快取中的每個分區都有自己的分頁 Blob 集,如上表所示。 例如,具有三個分區的 P2 快取會將其 AOF 檔案分散到 48 個分頁 Blob:每個分區有 16 個 Blob,具有三個分區。
重寫之後,記憶體中有兩組 AOF 檔案。 重寫會在背景發生,並附加至第一組檔案。 設定作業,在重寫期間傳送至快取,並附加至第二組。 如果發生失敗,則會在重寫期間暫時儲存備份。 在重寫完成之後,系統會立即刪除備份。 如果您的記憶體帳戶開啟虛刪除,則會套用虛刪除設定,而現有的備份會繼續處於虛刪除狀態。
記憶體帳戶上的防火牆例外狀況會影響持續性嗎?
使用受控識別會將快取實例新增至 受信任的服務清單,讓防火牆例外狀況更容易執行。如果您不是使用受控識別,而是使用密鑰授權記憶體帳戶,則記憶體帳戶上的防火牆例外狀況通常會中斷持續性程式。 這隻適用於 進階版 層中的持續性。
如果我有多個復本,是否可以啟用 AOF 持續性?
使用 進階版 層,您無法使用具有多個複本的僅限附加檔案 (AOF) 持續性。 在 Enterprise 和 Enterprise Flash 層中,複本架構比較複雜,但在區域備援部署中使用企業快取時,支援 AOF 持續性。
如何? 檢查我的記憶體帳戶是否已啟用虛刪除?
選取快取用於持續性的記憶體帳戶。 從 [資源] 功能選取 [數據保護 ]。 在工作窗格中,檢查 [啟用 Blob 虛刪除] 的狀態。 如需 Azure 記憶體帳戶中虛刪除的詳細資訊,請參閱 為 Blob 啟用虛刪除。
下一步
深入了解 Azure Cache for Redis 功能。