Azure 受控 Redis 提供不同的 SKU 和階層選擇,可在選擇快取大小和效能時提供彈性。 您可以調整為更大的記憶體大小,或變更為具有更多計算效能的層級。 您也可以調整為較小或更合適的層級。 本文說明如何使用 Azure 入口網站和 Azure PowerShell 與 Azure CLI 等工具來調整快取。
備註
因為每個 Azure 受控 Redis 層都有幾乎相同的功能,因此調整通常只會用來變更記憶體和效能特性。 調整異地複寫的 Azure Managed Redis 快取仍處於公開預覽狀態。
縮放類型
Azure Managed Redis 支援以兩個維度來進行調整:
記憶體 增加記憶體會增加 Redis 執行個體的大小,讓您可以儲存更多的資料。 減少記憶體時,您必須確定目前的記憶體使用量小於您想要使用的新記憶體大小。
vCPU Azure Managed Redis 提供三個層級 (記憶體最佳化型、平衡型和計算最佳化型),其中每個記憶體層級配置的 vCPU 數也會逐漸增加。 調整為具有更多 vCPU 的層級可以提高執行個體的效能,而無需增加記憶體。 不同於 Azure Cache for Redis 的基本、標準和進階層僅使用單一 vCPU,Azure 管理型 Redis 會使用 Redis Enterprise 堆疊。 Redis 企業版堆疊能夠使用多個 vCPU,這表示 Redis 實例所使用的 vCPU 數目會直接與輸送量和延遲效能相互關聯。
效能層級
有四層可用的 Azure Managed Redis,每個層級都有不同的效能特性和價格層級。
這很重要
所有使用超過 235 GB 儲存空間的記憶體內層級皆在公開預覽中,包括記憶體優化 M350 及以上版本;平衡 B350 及以上;以及 Compute Optimized X350 及以上版本。 所有這些層級和更高層級都處於公開預覽狀態。
所有 Flash 優化層都處於公開預覽狀態。
階層和 SKU 速覽
以下是三個層級的儲存,用於將資料儲存在記憶體中:
記憶體最佳化適用於需要高記憶體對 vCPU 比率 (8:1) 但不需要最高輸送量效能的記憶體密集使用案例。 它為需要較少處理能力或輸送量的案例提供較低的價格點,使其成為開發和測試環境的絕佳選擇。
平衡 (記憶體+ 計算) 提供平衡的記憶體對 vCPU (4:1) 比率,使其非常適合標準工作負載。 此層提供記憶體和計算資源的健康平衡。
計算最佳化專為需要最大輸送量的效能密集型工作負載所設計,記憶體與 vCPU 的比例較低 (2:1)。 非常適合需要最高效能的應用程式。
這是同時儲存記憶體和磁碟資料的層級:
Flash Optimized (預覽) 可讓 Redis 叢集自動將較不常存取的數據從記憶體 (RAM) 移至 NVMe 記憶體。 這會降低效能,但可以在處理大型資料集時,以符合成本效益的方式擴充快取。
效能 (輸送量和延遲)
如需效能基準測試以及如何衡量各 SKU 和層級效能的詳細資訊,請參閱使用 Azure Managed Redis 進行效能測試
調整時機
您可以使用 Azure Managed Redis 的監視功能來監視快取的健康情況和效能。 使用該資訊來判斷何時可調整快取。
您可以監視下列計量來判斷是否需要調整。
-
中央處理器
- 高 CPU 使用率表示 Redis 伺服器無法跟上所有用戶端的要求速度。 調整為更多 vCPU 有助於將要求分散到多個 Redis 進程。 調整也有助於分散 TLS 加密/解密和連線/中斷連線的負載,從而加快使用 TLS 的快取執行個體的效能。
-
記憶體使用量
- 高記憶體使用量表示就目前的快取大小而言,您的資料大小太大。 請考慮調整為具有較大記憶體的快取大小。 減少記憶體時,您必須確保目前快取的記憶體使用量低於希望使用的新記憶體大小。 您無法將大型數據集放入較小容量的快取中。
-
用戶端連線
- 每個快取大小都有可支援的用戶端連線數目限制。 如果您的用戶端連線數接近快取大小的上限,請考慮擴充為更大的記憶體大小或更高的效能層級。
- 有關不同快取大小的連線數限制的詳細資訊,請參閱使用 Azure Managed Redis 進行效能測試。
-
網路頻寬
- 如果 Redis 伺服器超過可用的頻寬,用戶端要求可能會逾時,因為伺服器將資料推送至用戶端的速度不夠快。 如需查看使用的伺服器端頻寬,請檢查「快取讀取」和「快取寫入」計量。 如果您的 Redis 伺服器超出可用的網路頻寬,請考慮擴充為更高的效能層級或更大的快取大小。
- 所選的叢集原則會影響可用的網路頻寬。 通常,OSS 叢集原則的網路頻寬高於企業叢集原則。 如需詳細資訊,請參閱叢集原則
- 有關不同快取大小的網路可用頻寬的詳細資訊,請參閱使用 Azure Managed Redis 進行效能測試。
有關確定要使用的快取定價層級的詳細資訊,請參閱選擇合適的層級。
欲了解更多如何優化縮放流程的資訊,請參閱擴展 最佳實務指南。
調整 Azure Managed Redis 的限制
- 您無法從記憶體最佳化型、平衡型或計算最佳化型層級調整為快閃最佳化型層級,反之亦然。
- 減少 Redis 實例的記憶體時,Redis 實例目前的記憶體使用量應該小於預期的新記憶體大小。 如需詳細資訊,請參閱 如果我調整為較小的記憶體大小,我的數據會發生什麼情況?。
- 當減少 Redis 執行個體的記憶體或 vCPU 時,您只能調整至其 vCPU 和分區設定與目前執行個體上設定相容的 SKU。
- 在某些情況下,當進行調整時,Redis 執行個體的底層 IP 位址可能會變更。 執行個體的 DNS 記錄會變更,對大部分的應用程式而言是透明的。 不過,如果您使用IP位址來設定 Redis 實例的連線,或設定 NSG,或允許流量流向 Redis 實例的防火牆,則應用程式可能會在 DNS 記錄更新之後連線時發生問題。
- 在異地複寫群組中調整執行個體有一些其他的限制。 如需相關資訊,請參閱「異地複寫是否有調整限制?」。
- 當您縮小規模時,只能調整為某些層級。 如需詳細資訊,請參閱 為什麼我只能縮減為較小的SKU子集?。
如何調整
本節將說明如何擴展 Azure Managed Redis 快取。
使用 Azure 入口網站進行調整
備註
調整異地複寫的 Azure Managed Redis 快取仍處於公開預覽狀態。
若要調整快取,在 Azure 入口網站中瀏覽至快取,然後選取 [資源] 功能表中的 [調整]。
若要調整您的 vCPU,請選擇不同的快取類型,然後選擇儲存。
這很重要
如果您選取不能縮放至的 SKU,則會停用儲存選項。 請檢視調整 Azure 受控 Redis 的限制一節,以了解允許的調整選項詳細資訊。
當縮放完成時,資源功能表的[概觀]區段中,狀態會從[調整中]變更為[正在執行]。
使用 PowerShell 進行調整
您可以透過 PowerShell,使用 Update-AzRedisEnterpriseCache Cmdlet 來調整 Azure Managed Redis 執行個體。 您可以修改 Sku 屬性以選取所需的層級和 SKU。 下列範例顯示如何將名為 myCache 的快取調整為計算最佳化型的 X20 (24 GB) 執行個體。
Update-AzRedisEnterpriseCache -ResourceGroupName <your-group> -Name <your-cache-name> -Sku <sku-name>
使用 Azure CLI 進行調整
若要使用 Azure CLI 來調整 Azure Managed Redis 執行個體,請呼叫 az redisenterprise update 命令。 您可以修改 sku 屬性以選取所需的層級和 SKU。 下列範例顯示如何將名為 myCache 的快取調整為計算最佳化型的 X20 (24 GB) 執行個體。
az redisenterprise update --cluster-name <your-cache-name> --resource-group <your-resource-group> --sku <name-of-sku>
調整常見問題集
下列清單包含有關 Azure Managed Redis 調整的常見問題的解答。
- 我可以在層級內或跨層級進行調整嗎?
- 如果我調整為較小的記憶體大小,我的數據會發生什麼情況?
- 調整之後,是否必須變更我的快取名稱或存取金鑰?
- 調整運作方式如何?
- 我是否會在調整期間遺失快取中的資料?
- 我的快取是否可在調整期間使用?
- 有異地複寫的調整限制嗎?
- 調整需要多長的時間?
- 如何分辨調整何時完成?
- Azure Managed Redis 是否使用叢集?每個 Azure Managed Redis SKU 使用多少個分區?
- 如何在叢集中散發索引鍵?
- 我可以建立的最大快取大小為何?
- 為什麼只有我能縮減為較小的SKU子集?
- 選擇 OSS 或企業叢集後,可以變更叢集原則嗎?
我可以在層級內或跨層級進行調整嗎?
您始終可以在同一個記憶體大小下擴充為更高的效能層級,或者在同一個效能層級內擴充為更大的記憶體大小。 若要調整為較低的效能層級或較小的記憶體大小,建議您執行 “listskusforscaling” REST API,以取得您可以調整的 SKU 清單。
az redisenterprise list-skus-for-scaling --cluster-name <your-redis-instance> --resource-group <your-resource-group>
如果我調整為較小的記憶體大小,我的數據會發生什麼情況?
只有當目前的記憶體使用量小於預期的較小記憶體大小時,您才能調整為更小的記憶體大小。 如果目前的記憶體使用量高於預期的較小大小,您的調整要求就會失敗。 您可以藉由刪除的垃圾索引鍵值組或執行排清作業來減少目前的記憶體使用量。
az redisenterprise database flush --cluster-name <your-redis-instance> --resource-group <your-resource-group>
調整之後,是否必須變更我的快取名稱或存取金鑰?
否,您的快取名稱和存取金鑰不會在調整作業期間變更。
調整運作方式如何?
- 當您調整 Redis 執行個體時,Redis 叢集中的其中一個節點會關閉並重新佈建為新的大小。 然後資料會傳輸過去,接著是另一個節點進行類似的容錯移轉,然後再進行重新佈建。 關機並重新佈建類似於修補期間或快取的其中一個節點故障時發生的程序。
- 當您調整為具有更多 vCPU 的實例時,會布建新的分區並新增至 Redis 伺服器叢集。 然後,資料會跨所有分區重新分區化。
如需 Azure Managed Redis 如何處理分區化的詳細資訊,請參閱分區化設定。
我是否會在調整期間遺失快取中的資料?
- 如果啟用了高可用性模式,則應該在調整作業期間保留所有資料。
- 如果您要調整為較小的記憶體層級,您必須確定目前的記憶體使用量小於預期的新記憶體大小。 如果目前的記憶體使用量超過預期的 SKU 記憶體大小,您可以使用 Flush 作業排清數據,或手動選擇要刪除的索引鍵值。
- 如果停用了高可用性模式,則在調整作業期間所有資料都會遺失,且無法使用快取。
是否可以在調整期間使用我的快取?
- 啟用高可用性模式的 Azure Managed Redis 執行個體在調整作業期間仍可使用。 不過,在調整這些快取時,可能會出現連線中斷的情況。 這些連線中斷的情況通常很短暫,Redis 用戶端通常可以立即重新建立其連線。
- 如果停用了高可用性模式,Azure Managed Redis 執行個體在調整作業期間會處於離線的狀態。
有異地複寫的調整限制嗎?
調整異地複寫快取目前處於公開預覽的狀態。 設定作用中異地複寫後,您不能在異地複寫群組中混搭使用不同大小的快取。 因此,在異地複寫群組中調整快取需要執行一些其他的步驟。 如需指示,請參閱在異地複寫群組中調整執行個體。
異地複寫的快取不支援縮小至較小的記憶體大小或較少的分區計數。 如需詳細資訊,請參閱 每個 Azure 受控 Redis SKU 使用多少個分區 來找出叢集中的分區。
調整需要多長的時間?
調整時間取決於幾個因素。 以下因素會影響調整所需時間。
- 資料量:較大的資料量需要較長的時間才能複製
- 高寫入要求:較高的寫入數目表示有較多跨節點或跨分區的資料複製
- 高 CPU 使用率:CPU 使用率較高表示 Redis 伺服器處於繁忙狀態,可用於完成資料重新散發的 CPU 週期有限
通常,在調整沒有資料的執行個體時,大約需要 10 分鐘。
如何分辨調整何時完成?
在 Azure 入口網站中,您可以看到調整作業進行中。 當調整完成時,查看 [資源] 功能表上的 [概覽] 時,快取的狀態會變更為 執行中。
Azure Managed Redis 是否使用叢集?
與 Azure Cache for Redis 不同,Azure Managed Redis 在所有層級和 SKU 上都使用叢集。 叢集可以顯著提升效能最佳化。 Azure Managed Redis 的每個 SKU 設定都會根據可用的 vCPU 數,配置最佳化的分區數。 分區數不是使用者可以設定的。
每個 Azure Managed Redis SKU 會使用多少個分區?
因為 Azure Managed Redis 是在 Redis 企業版軟體上執行的,所以與社群版 Redis 相比,分區可以用於更密集的組態中。 若要了解每個 SKU 中使用的特定分區數,請參閱分區化設定。
如何在叢集中散發索引鍵?
依據有關金鑰散發模型的 Redis 文件︰金鑰空間會分割成 16,384 個位置。 每個索引鍵都會雜湊並指派給上述的其中一個位置,而這些位置散發於叢集的各個節點。 您可以設定哪個部分的索引鍵會雜湊,以確保多個索引鍵位於使用主題標籤的相同分區中。
- 具有主題標籤的金鑰 - 如果金鑰的任何部分被括在
{和}中,則只有該部分的金鑰會為了判斷金鑰的主題標籤位置而進行雜湊。 例如,下列三個金鑰會位於相同的分區︰{key}1、{key}2和{key}3,因為只會雜湊名稱的key部分。 如需索引鍵主題標籤規格的完整清單,請參閱索引鍵主題標籤。 - 沒有雜湊標籤的金鑰 - 會將整個金鑰名稱用於雜湊,而產生平均散發於快取分區的結果 (就統計而言)。
如需最佳的效能和輸送量,我們建議平均散發索引鍵。 如果您使用具有主題標籤的金鑰,則應用程式必須負責確保平均散發金鑰。
如需詳細資訊,請參閱金鑰散發模型、Redis 叢集資料分區化和金鑰主題標籤。
我可以建立的最大快取大小為何?
您可以擁有的最大快取大小為 4.5 TB,稱為快閃最佳化型的 A4500 執行個體。 Azure Cache for Redis 定價。
為什麼只有我能縮減至較小的SKU子集?
為了保持與分片和 vCPU 數量的相容性,您只能縮減至特定的 SKU。 您可以在 Azure 入口網站的 [調整] 區段中,檢查可用的選項,以了解 Redis 執行個體可以縮減到哪些 SKU。 您也可以執行下列 CLI 命令。
您可以在 Azure 入口網站的 [調整] 區段中,檢查可用的選項,以了解 Redis 執行個體可以縮減到哪些 SKU。
az redisenterprise list-skus-for-scaling --cluster-name <your-redis-instance> --resource-group <your-resource-group>
選擇 OSS 或企業叢集後,可以變更叢集原則嗎?
建立快取時,將叢集原則設定為 OSSCluster 或 EnterpriseCluster 之後,就無法變更它。 若要切換至不同的叢集政策,您必須刪除 Redis 快取,然後使用所需的組態重新建立它。 部署之後,只有具有非叢集原則的快取才能更新為叢集組態。