調整 Azure Cache for Redis 執行個體

Azure Cache for Redis 有不同的層級供應專案,可在選擇快取大小和功能時提供彈性。 透過調整,您可以在建立快取實例之後變更節點的大小、層級和數目,以符合您的應用程式需求。 本文說明如何使用 Azure 入口網站 來調整快取,以及 Azure PowerShell 和 Azure CLI 等工具。

調整類型

基本上有兩種方式可調整 Azure Cache for Redis 實例:

  • 相應增加 會增加執行 Redis 伺服器的虛擬機 (VM) 大小,並新增更多記憶體、虛擬 CPU(vCPU)和網路頻寬。 相應增加也稱為 垂直調整。 相應增加的相反是 相應減少

  • 相應放大 會將快取實例分割成相同大小的更多節點,透過平行處理來增加記憶體、vCPU 和網路頻寬。 相應放大也稱為 水平調整分區化。 相應放大的相反是 相應縮小。 在 Redis 社群中,相應放大通常稱為叢集

可用性範圍

基本與標準 Premium 企業和企業 Flash
相應增加 Yes Yes 是 (預覽)
相應減少 Yes .是 No
擴增 No Yes 是 (預覽)
相應縮小 No .是 No

調整時機

您可以使用 Azure Cache for Redis 的監視 功能來監視快取的健康情況和效能。 使用該信息來判斷何時調整快取。

您可以監視下列計量,以判斷是否需要調整。

  • Redis 伺服器負載
    • 高 Redis 伺服器負載表示伺服器無法跟上來自所有用戶端的要求。 因為 Redis 伺服器是單個線程進程,所以相應放大而不是相應增加通常更有説明 藉由啟用叢集來相應放大,有助於將額外負荷函式分散到多個 Redis 進程。 相應放大也可協助散發 TLS 加密/解密和連線/中斷連線,以加速使用 TLS 的快取實例。
    • 相應增加仍有助於減少伺服器負載,因為背景工作可以利用更多 vCPU,並釋放主要 Redis 伺服器進程的線程。
    • Enterprise 和 Enterprise Flash 層會使用 Redis Enterprise,而不是 開放原始碼 Redis。 這些層的其中一個優點是 Redis 伺服器進程可以利用多個 vCPU。 因此,相應增加和相應放大這些層有助於減少伺服器負載。 如需詳細資訊,請參閱 Azure Cache for Redis 的企業和企業快閃層最佳做法。
  • 記憶體使用量
    • 記憶體使用量偏高,表示您的數據大小對於目前的快取大小而言太大。 請考慮調整為具有較大記憶體的快取大小。 相應增加相應放大在這裡都是有效的。
  • 用戶端連線
    • 每個快取大小都有其可支援的用戶端連線數目限制。 如果您的用戶端連線接近快取大小的限制,請考慮 相應增加 為較大的層。 相應放大 並不會增加支援的用戶端連線數目。
    • 如需依快取大小來限制連線限制的詳細資訊,請參閱 Azure Cache for Redis 定價
  • 網路頻寬
    • 如果 Redis 伺服器超過可用的頻寬,用戶端要求可能會逾時,因為伺服器無法將數據推送到用戶端的速度夠快。 檢查「快取讀取」和「快取寫入」計量,以查看正在使用多少伺服器端頻寬。 如果您的 Redis 伺服器超過可用的網路頻寬,您應該考慮相應放大或相應增加至具有較高網路頻寬的較大快取大小。
    • 針對使用 企業叢集原則的企業層快取,相應放大不會增加網路頻寬。
    • 如需依快取大小的網路可用頻寬詳細資訊,請參閱 Azure Cache for Redis 規劃常見問題

如需決定要使用的快取定價層的詳細資訊,請參閱 選擇正確的層Azure Cache for Redis 規劃常見問題

注意

如需如何優化調整程式的詳細資訊,請參閱 調整指南的最佳做法

調整 Azure Cache for Redis 的必要條件/限制

您可以使用下列限制來相應增加/減少至不同的定價層:

  • 您無法從較高的定價層調整為較低的定價層。
    • 您無法從 企業企業快取 向下調整為任何其他層。
    • 您無法從 進階版 快向下調整為標準基本快取。
    • 您無法從 標準 快取向下調整為 基本 快取。
  • 您可以從基本快取調整標準快取,但無法同時變更大小。 如果您需要不同的大小,您可以稍後對想要的大小執行調整作業。
  • 您無法直接從基本快取調整為 進階版 快取。 首先,在一個調整作業中從基本調整調整為標準,然後在下一個調整作業中從標準調整為 進階版
  • 您無法從較大的大小縮小到 C0 (250 MB) 大小。 不過,您可以相應減少為相同定價層內的任何其他大小。 例如,您可以將 C5 標準縮減為 C1 標準。
  • 您無法從 進階版標準基本快取調整為 Enterprise 或 Enterprise Flash 快取。
  • 您無法在 Enterprise 與 Enterprise Flash 之間進行調整。

您可以使用下列限制相應放大/縮小:

  • 只有 進階版企業和企業 Flash 層才支援向外延展。
  • 只有在 進階版 層上才支援相應縮小
  • 進階版 層上,必須先啟用叢集,才能相應縮小或相應放大。
  • 進階版 層上,支持相應放大至 10 個分區。 最多支援 30 個分區處於預覽狀態。 (對於具有兩個複本的快取,分區限制為 20。使用三個複本時,分區限製為15。
  • 只有 EnterpriseEnterprise Flash 層可以同時相應增加和相應放大。

如何調整 - 基本、標準和 進階版 層

使用 Azure 入口網站相應增加和減少

  1. 若要調整快取,請流覽至 Azure 入口網站 中的快取,然後從 [資源] 功能選取 [調整]。

    Screenshot showing Scale on the resource menu.

  2. 在工作窗格中選擇定價層,然後選擇 [ 選取]。

    Screenshot showing the Azure Cache for Redis tiers.

  3. 當快取調整為新層時, 會顯示調整 Redis 快取 通知。

    Screenshot showing the notification of scaling.

  4. 調整完成時,狀態會從 [調整] 變更為 [執行中]。

注意

當您使用入口網站相應增加或減少快取時, maxmemory-reservedmaxfragmentationmemory-reserved 設定都會自動依快取大小比例進行調整。 例如,如果在 maxmemory-reserved 6 GB 快取上設定為 3 GB,而且您調整為 12 GB 快取,則設定會在調整期間自動更新為 6 GB。 當您相應減少時,就會發生相反的情況。

使用 PowerShell 相應增加和縮小

您可以在修改 或 Sku 屬性時Size,使用 Set-AzRedisCache Cmdlet,使用 PowerShell 調整 Azure Cache for Redis 實例。 下列範例示範如何在相同層中將名為 myCache 的快取調整為 6 GB 快取。

   Set-AzRedisCache -ResourceGroupName myGroup -Name myCache -Size 6GB

如需使用 PowerShell 調整的詳細資訊,請參閱 使用 PowerShell 調整 Azure Cache for Redis。

使用 Azure CLI 相應增加和減少

若要使用 Azure CLI 調整 Azure Cache for Redis 實例,請呼叫 az redis update 命令。 sku.capcity使用 屬性在層內進行調整,例如從標準 C0 調整為標準 C1 快取:

az redis update --cluster-name myCache --resource-group myGroup --set "sku.capacity"="2"

使用 'sku.name' 和 'sku.family' 屬性來相應增加至不同的層級,例如,從標準 C1 快取調整為 進階版 P1 快取:

az redis update --cluster-name myCache --resource-group myGroup --set "sku.name"="Premium" "sku.capacity"="1" "sku.family"="P"

如需使用 Azure CLI 調整的詳細資訊,請參閱 變更現有 Azure Cache for Redis 的設定。

注意

當您以程式設計方式相應增加或減少快取時(例如使用 PowerShell 或 Azure CLI),任何 maxmemory-reservedmaxfragmentationmemory-reserved 會忽略為更新要求的一部分。 只接受您的調整變更。 您可以在調整作業完成之後更新這些記憶體設定。

如何相應增加和相應放大 - 企業和企業 Flash 層

企業和企業 Flash 層能夠在一項作業中相應增加和相應放大。 其他層需要每個動作的個別作業。

警告

企業和企業 Flash 層尚不支援相應減少或相應減少作業。

使用 Azure 入口網站 進行調整

  1. 若要調整快取,請流覽至 Azure 入口網站 中的快取,然後從 [資源] 功能選取 [調整]。

    Screenshot showing Scale selected in the Resource menu for an Enterprise cache.

  2. 若要相應增加,請選擇不同的 快取類型 ,然後選擇 [ 儲存]。

    重要

    您目前只能相應增加。 您無法相應減少。

    Screenshot showing the Enterprise tiers in the working pane.

  3. 若要相應放大,請增加 [ 容量 ] 滑桿。 容量增加兩個。 此數位會反映要新增多少基礎 Redis Enterprise 節點。 這個數位一律是兩個的倍數,以反映要針對主要和複本分區新增的節點。

    重要

    您目前只能相應放大、增加容量。 您無法相應縮小。

    Screenshot showing Capacity in the working pane a red box around it.

  4. 當快取調整為新層時, 會顯示調整 Redis 快取 通知。

    Screenshot showing notification of scaling an Enterprise cache.

  5. 調整完成時,狀態會從 [調整] 變更為 [執行中]。

使用 PowerShell 進行調整

您可以使用 Update-AzRedisEnterpriseCache Cmdlet,使用 PowerShell 調整 Azure Cache for Redis 實例。 您可以修改 Sku 屬性以相應增加實例。 您可以修改 Capacity 屬性以相應放大實例。 下列範例示範如何將名為 myCache 的快取調整為容量為 4 的企業 E20 (25 GB) 實例。

   Update-AzRedisEnterpriseCache -ResourceGroupName myGroup -Name myCache -Sku Enterprise_E20 -Capacity 4

使用 Azure CLI 進行調整

若要使用 Azure CLI 調整 Azure Cache for Redis 實例,請呼叫 az redisenterprise update 命令。 您可以修改 sku 屬性以相應增加實例。 您可以修改 capacity 屬性以相應放大實例。 下列範例示範如何將名為 myCache 的快取調整為容量為 4 的企業 E20 (25 GB) 實例。

az redisenterprise update --cluster-name "myCache" --resource-group "myGroup" --sku "Enterprise_E20" --capacity 4

調整常見問題

下列清單包含有關 Azure Cache for Redis 調整常見問題的解答。

我可以在 進階版 快取內調整為、從或調整嗎?

  • 您無法從 進階版 快取相應減少到基本標準定價層。
  • 您可以從一個 進階版 快取定價層調整到另一個快取定價層。
  • 您無法直接從基本快取調整為 進階版取。 首先,在一個調整作業中從基本調整調整為標準,然後在稍後的調整作業中從標準調整為 進階版
  • 您無法從 進階版 快取調整為 Enterprise 或 Enterprise Flash取。
  • 如果您在建立 進階版 快取時啟用叢集,您可以變更叢集大小。 如果您的快取是在未啟用叢集的情況下建立的,您可以稍後設定叢集。

調整之後,我是否需要變更快取名稱或存取密鑰?

否,在調整作業期間,您的快取名稱和金鑰不會變更。

調整如何運作?

  • 當您將基本快取調整為不同的大小時,它會關閉,並使用新的大小布建新的快取。 在此期間,快取無法使用,且快取中的所有數據都會遺失。
  • 當您將 基本 快取調整為 標準 快取時,會布建複本快取,並將數據從主要快取複製到複本快取。 調整程式期間仍可使用快取。
  • 當您將 Standard進階版Enterprise 或 Enterprise Flash 快取調整為不同的大小時,其中一個複本會關閉並重新佈建至新的大小和傳輸的數據,然後另一個複本會在重新佈建之前執行故障轉移,類似於其中一個快取節點失敗時所發生的程式。
  • 當您相應放大叢集快取時,會布建新的分區並新增至 Redis 伺服器叢集。 然後,數據會跨所有分區重新分區。
  • 當您調整叢集快取時,數據會先重新分區,然後叢集大小會縮減為所需的分區。
  • 在某些情況下,例如調整或移轉快取至不同的叢集,快取的基礎IP位址可能會變更。 快取變更的 DNS 記錄,對大多數應用程式而言都是透明的。 不過,如果您使用IP位址來設定快取的連線,或設定NSG,或允許流量流向快取的防火牆,則應用程式可能會在 DNS 記錄更新之後連線時發生問題。

在調整期間,我是否遺失快取中的數據?

  • 當您將 基本 快取調整為新的大小時,所有數據都會遺失,而且在調整作業期間無法使用快取。
  • 當您將 基本 快取調整為 標準 快取時,通常會保留快取中的數據。
  • 當您將 Standard進階版Enterprise 或 Enterprise Flash 快取調整為較大的大小時,通常會保留所有數據。 當您將標準或 進階版 快取調整為較小的大小時,如果數據大小超過相應縮小的新大小,可能會遺失數據。 如果縮小時遺失數據,則會使用 allkeys-lru 收回原則收回索引鍵。

調整之後,是否可以使用 進階版 層的所有功能?

否,某些功能只能在您在 進階版 層中建立快取時設定,而且無法在調整之後使用。

建立 進階版 快取之後,就無法新增這些功能:

  • VNet 插入
  • 新增區域備援
  • 每個主要復本使用多個複本

若要使用任何這些功能,您必須在 進階版 層中建立新的快取實例。

我的自訂資料庫設定是否在調整期間受到影響?

如果您在快取建立期間設定 databases 了設定的自定義值,請記住,某些定價層有不同的 資料庫限制。 以下是在此案例中調整時的一些考慮:

  • 當您調整為低於目前層限制的定價層 databases 時:
    • 如果您使用的預設數目 databases,即所有定價層的16個,則不會遺失任何數據。
    • 如果您使用的自定義數目 databases 落在您要調整的階層限制內,則會保留此 databases 設定,且不會遺失任何數據。
    • 如果您使用的自定義數目 databases 超過新層的限制, databases 此設定會降低為新層的限制,而且移除資料庫中的所有數據都會遺失。
  • 當您調整為與目前層相同或更高 databases 限制的定價層時,會保留您的 databases 設定,且不會遺失任何數據。

雖然 Standard、進階版、Enterprise 和 Enterprise Flash 快取具有可用性 SLA,但不會遺失數據 SLA。

我的快取是否會在調整期間使用?

  • 在調整作業期間,標準進階版企業和企業快取仍可供使用。 不過,調整這些快取時可能會發生連線中斷,同時從 基本 快取調整為 標準 快取。 這些連線 blips 預期會很小,redis 用戶端通常可以立即重新建立其連線。
  • 對於使用作用中異地復寫的企業和企業取,在某些情況下,只有連結快取的子集可能會引發問題。 建議您盡可能將異地復寫群組中的所有快取調整為一起。
  • 將作業調整作業期間的基本 快取離線為不同的大小。 從基本擴充標準時,基本快取仍可供使用,但可能會遇到小型連線閃爍。 如果發生連線中斷,Redis 用戶端通常可以立即重新建立其連線。

異地復寫是否有調整限制?

設定 被動異地復 寫后,您可能會注意到您無法調整快取,或變更叢集中的分區。 兩個快取之間的異地復寫連結可防止調整作業,或變更叢集中的分區數目。 您必須取消連結快取以發出這些命令。 如需詳細資訊,請參閱 設定異地複寫

設定 作用中異地復 寫時,您無法調整快取。 異地復寫群組中的所有快取的大小和容量都必須相同。

不支援的作業

  • 您無法從較高的定價層調整為較低的定價層。
    • 您無法從 進階版 快取向下調整為標準基本快取。
    • 您無法從 標準 快取向下調整為 基本 快取。
  • 您可以從基本快取調整標準快取,但無法同時變更大小。 如果您需要不同的大小,您可以稍後對所需的大小執行調整作業。
  • 您無法直接從基本快取調整為 進階版取。 先在一個調整作業中從基本調整為標準,然後在稍後的作業中從標準調整為 進階版
  • 您無法從 進階版 快調整為 Enterprise 或 Enterprise Flash 快取。
  • 您無法從較大的大小縮小到 C0 (250 MB) 大小。

如果調整作業失敗,服務會嘗試還原作業,而快取會還原為原始大小。

調整需要多久時間?

調整時間取決於幾個因素。 以下是一些會影響調整所需時間的因素。

  • 數據量:較大量的數據需要較長的時間才能復寫
  • 高寫入要求:較高的寫入數目表示跨節點或分區複寫更多數據
  • 高伺服器負載:較高的伺服器負載表示 Redis 伺服器忙碌中,且 CPU 週期有限,無法完成數據轉散發

一般而言,當您調整沒有數據的快取時,大約需要 20 分鐘的時間。 針對叢集快取,調整大約需要每個分區 20 分鐘,且最少的數據。

如何判斷調整何時完成?

在 Azure 入口網站 中,您可以看到進行中的調整作業。 調整完成時,快取的狀態會變更為 [執行中]。

我需要對用戶端應用程式進行任何變更以使用叢集嗎?

  • 啟用叢集時,只有資料庫0可用。 如果您的用戶端應用程式使用多個資料庫,並且嘗試讀取或寫入 0 以外的資料庫,則會擲回下列例外狀況: Unhandled Exception: StackExchange.Redis.RedisConnectionException: ProtocolFailure on GET --->StackExchange.Redis.RedisCommandException: Multiple databases are not supported on this server; cannot switch to database: 6

    如需詳細資訊,請參閱 Redis 叢集規格 - 已實作的子集

  • 如果您使用 StackExchange.Redis,則必須使用 1.0.481 或更新版本。 您可以使用連線到停用叢集的快取時所使用的相同 端點、埠和金鑰 來連線到快取。 唯一的差別在於,所有讀取和寫入都必須對資料庫 0 執行。

    其他用戶端可能有不同的需求。 請參閱 所有 Redis 用戶端是否支援叢集?

  • 如果您的應用程式使用多個金鑰作業批處理成單一命令,則所有金鑰都必須位於相同的分區中。 若要找出相同分區中的密鑰,請參閱 如何在叢集中散發密鑰?

  • 如果您使用 Redis ASP.NET 工作階段狀態提供者,則必須使用 2.0.1 或更高版本。 請參閱 是否可以搭配 Redis ASP.NET 工作階段狀態和輸出快取提供者使用叢集?

重要

使用企業或企業 FLash 層時,您可以選擇 OSS 叢集模式企業叢集模式。 OSS 叢集模式與 進階版 層上的叢集相同,並遵循 開放原始碼 叢集規格。 企業叢集模式的效能可能較低,但會使用 Redis 企業叢集,不需要進行任何用戶端變更即可使用。 如需詳細資訊,請參閱 Enterprise 上的叢集。

如何在叢集中散發密鑰?

根據密鑰散發模型的 Redis 檔:金鑰空間會分割成 16,384 個位置。 每個密鑰都會哈希並指派給其中一個位置,這些位置會分散到叢集的節點。 您可以設定索引鍵的哈希部分,以確保多個索引鍵使用哈希標籤位於相同的分區中。

  • 具有哈希標籤的索引鍵 - 如果索引鍵的任何部分包含在 和 }{,則只有該部分的索引鍵會進行哈希,以判斷密鑰的哈希位置。 例如,下列三個索引鍵會位於相同的分區: {key}1{key}2{key}3 ,因為只會 key 哈希名稱的一部分。 如需金鑰哈希標記規格的完整清單,請參閱 密鑰哈希標籤標
  • 沒有哈希標籤的索引鍵 - 整個索引鍵名稱會用於哈希,以統計方式平均分佈於快取的分區。

為了獲得最佳效能和輸送量,我們建議平均散發密鑰。 如果您使用具有哈希標籤的金鑰,則應用程式有責任確保金鑰平均散發。

如需詳細資訊,請參閱 密鑰散發模型Redis 叢集數據分區化密鑰哈希標記

如需使用 StackExchange.Redis 用戶端在相同分區中處理叢集和尋找密鑰的範例程式代碼,請參閱 Hello World 範例的clustering.cs部分。

我可以建立的最大快取大小為何?

您可以擁有的最大快取大小是 4.5 TB。 此結果是具有容量9的叢集 F1500 快取。 如需詳細資訊,請參閱 Azure Cache for Redis 定價

所有 Redis 用戶端是否都支援叢集?

許多客戶端連結庫都支援 Redis 叢集,但並非全部。 檢查您用來確認您使用的連結庫和支援叢集的連結庫和版本的檔。 StackExchange.Redis 是一個在較新版本中支援叢集的連結庫。 如需其他客戶端的詳細資訊,請參閱 Redis 叢集教學課程的<使用叢集播放>一節。

Redis 叢集通訊協定要求每個用戶端在叢集模式中直接連線到每個分區,並定義新的錯誤回應,例如 'MOVED' na 'CROSSSLOTS'。 當您嘗試使用不支援叢集的用戶端連結庫時,使用叢集模式快取時,結果可能是許多 MOVED重新導向例外狀況,或只是中斷您的應用程式,如果您正在執行跨位置多重密鑰要求。

注意

如果您使用 StackExchange.Redis 作為用戶端,請確認您使用的是最新版的 StackExchange.Redis 1.0.481 或更新版本,讓叢集正常運作。 如需移動例外狀況任何問題的詳細資訊,請參閱 移動例外狀況

如何? 啟用叢集時連線到我的快取?

您可以使用連線到未啟用叢集的快取時所使用的相同 端點金鑰 來連線到快取。 Redis 會管理後端的叢集,因此您不需要從用戶端管理叢集。

我可以直接連線到快取的個別分區嗎?

叢集通訊協定需要客戶端進行正確的分區連線,因此客戶端應該為您建立共享連線。 如此一來,每個分區都包含主要/復本快取組,統稱為快取實例。 您可以在 GitHub 上的 Redis 存放庫不穩定分支中使用 Redis-CLI 公用程式連線到這些快取實例。 此版本會在參數啟動時 -c 實作基本支援。 如需詳細資訊,請參閱在 Redis 叢集教學課程中搭配叢集https://redis.io播放。

您必須使用 -p 參數來指定要連線的正確埠。 使用 CLUSTER NODES 命令來判斷主要和復本節點所使用的確切埠。 使用下列埠範圍:

  • 針對非 TLS 進階版 層快取,可在範圍內使用130XX
  • 針對已啟用 TLS 進階版 層快取,可在範圍內使用150XX
  • 針對使用 OSS 叢集的企業和企業快取,初始連線是透過埠 10000。 連線 到個別節點可以使用85XX範圍內的埠來完成。 85xx 埠會隨著時間而變更,不應該硬式編碼到您的應用程式。

我可以為先前建立的快取設定叢集嗎?

是。 首先,藉由相應增加快取,確定您的快取位於 進階版 層中。 接下來,您可以看到叢集組態選項,包括啟用叢集的選項。 在建立快取之後,或第一次啟用叢集之後,變更叢集大小。

重要

您無法復原啟用叢集。 且已啟用叢集的快取,且只有一個分區的行為與沒有叢集之相同大小的快取不同。

所有 Enterprise 和 Enterprise Flash 層快取一律會叢集。

我可以設定基本或標準快取的叢集嗎?

叢集僅適用於 進階版、企業和企業快取。

我可以搭配 Redis ASP.NET 工作階段狀態和輸出快取提供者使用叢集嗎?

  • Redis 輸出快取提供者 - 不需要變更。
  • Redis 工作階段狀態提供者 - 若要使用叢集,您必須使用 RedisSessionStateProvider 2.0.1 或更高版本,或擲回例外狀況,這是重大變更。 如需詳細資訊,請參閱 v2.0.0 重大變更詳細數據

我在使用 StackExchange.Redis 和叢集時收到 MOVE 例外狀況,我該怎麼做?

如果您使用 StackExchange.Redis 並在使用叢集時收到 MOVE 例外狀況,請確定您使用 StackExchange.Redis 1.1.603 或更新版本。 如需設定 .NET 應用程式以使用 StackExchange.Redis 的指示,請參閱 設定快取用戶端

企業層快取上的 OSS 叢集和企業叢集有何差異?

OSS 叢集模式與 進階版 層上的叢集相同,並遵循 開放原始碼 叢集規格。 企業叢集模式可能效能較低,但使用 Redis 企業叢集,不需要進行任何用戶端變更即可使用。 如需詳細資訊,請參閱 Enterprise 上的叢集。

企業層快取使用多少分區?

不同於基本、標準和 進階版 層快取,企業和企業快取可以利用單一節點上的多個分區。 如需詳細資訊,請參閱 分區化和CPU使用率

下一步