使用 Azure 入口網站進行擴大和縮小
若要調整快取,在 Azure 入口網站中瀏覽至快取,然後選取 [資源] 功能表中的 [調整]。
在工作窗格中選擇定價層,然後選擇 [選取]。
快取調整為新層級時,會顯示 [正在調整 Redis 快取] 通知。
調整完成時,狀態會從 [正在調整] 變更為 [執行中]。
附註
當您使用入口網站來擴大或縮小快取時,maxmemory-reserved 和 maxfragmentationmemory-reserved 設定會自動依快取大小等比例進行縮減。
例如,如果在 6 GB 快取上,將 maxmemory-reserved 設定為 3 GB,而您調整為 12 GB 快取,則設定會在調整期間自動更新為 6 GB。
當您縮小時,則會是對等的情況。
使用 PowerShell 進行擴大和縮小
當修改的屬性為 或 Size 時,您可以透過 PowerShell,使用 Sku Cmdlet 來調整 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.capacity 屬性,在階層內進行調整,例如,從標準 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 Redis 快取的設定。
附註
當您透過程式方式擴展或縮小快取時(例如,使用 PowerShell 或 Azure CLI),任何 maxmemory-reserved 或 maxfragmentationmemory-reserved 都會被忽略作為更新請求的一部分。 只會接受您的縮放變更。 調整作業完成之後,您可以更新這些記憶體設定。
建立使用叢集擴增的新快取
當您建立新的 Azure Cache for Redis 時,會在建立快取期間,從工作窗格中啟用叢集。
使用建立開放原始碼 Redis 快取快速入門指南,開始使用 Azure 入口網站來建立新的快取。
在進階快取執行個體的 [進階] 索引標籤中,設定非 TLS 連接埠、叢集和資料持續性的設定。 若要啟用叢集功能,請選取 [啟用]。
叢集中最多可包含 30 個分區。 在選取 [啟用] 後,針對 [分區計數] 滑動滑桿或輸入 1 到 30 之間的數字,然後選取 [確定]。
每個分區都是由 Azure 管理的主要/複本快取組。 快取總大小的計算方式是將分區數目乘以在定價層中選取的快取大小。
建立快取後,您就能連線,並且就像非叢集化快取一樣使用它。 Redis 會在整個快取分區散發資料。 如果診斷已啟用,則會針對每個分片個別擷取計量,並可以透過 Azure Cache for Redis 的 [資源] 功能表來檢視。
使用快速入門指南完成建立快取。
建立快取需要一些時間。 您可以在 Azure Cache for Redis 的 [概觀] 頁面上監視進度。 當 [狀態] 顯示為 [執行中] 時,表示快取已可供使用。
如需搭配 StackExchange.Redis 用戶端使用叢集的範例程式碼,請參閱 Hello World 範例的 clustering.cs 部分。
縮減或擴增執行中的進階快取
若要在您先前建立、且已執行並啟用叢集功能的進階快取上變更叢集大小,請從 [資源] 功能表中選取 [叢集大小]。
若要變更叢集大小,請使用滑桿,或在 [分區計數] 文字輸入框中輸入 1 到 30 之間的數字。 然後,選取 [確定] 以儲存。
增加叢集大小會增加最大輸送量和快取大小。 增加叢集大小不會增加用戶端可用的最大連線數目。
使用 PowerShell 進行擴增和縮減
當修改的屬性為 時,您可以透過 PowerShell,使用 ShardCount Cmdlet 來擴增 Azure Cache for Redis 執行個體。 下列範例示範如何擴增名為 myCache 的快取,以使用三個分區 (也就是擴增為三倍)
Set-AzRedisCache -ResourceGroupName myGroup -Name myCache -ShardCount 3
如需有關如何使用 PowerShell 來調整規模的詳細資訊,請參閱使用 PowerShell 來調整 Azure Cache for Redis 的規模。
使用 Azure CLI 進行擴增和縮減
若要使用 Azure CLI 調整 Azure Cache for Redis 執行個體,請呼叫 az redis update 命令並使用 shard-count 屬性。 下列範例示範如何擴增名為 myCache 的快取,以使用三個分區 (也就是擴增為三倍)。
az redis update --cluster-name myCache --resource-group myGroup --set shard-count=3
如需有關如何使用 Azure CLI 來調整規模的詳細資訊,請參閱 變更現有 Azure Redis 快取的設定。
附註
當您透過程式方式擴展或縮小快取時(例如,使用 PowerShell 或 Azure CLI),任何 maxmemory-reserved 或 maxfragmentationmemory-reserved 都會被忽略作為更新請求的一部分。 只會接受您的縮放變更。 調整作業完成之後,您可以更新這些記憶體設定。
調整叢集會執行 MIGRATE \(英文\) 命令,這是個昂貴的命令。 為了影響最小,請考慮在離峰時段執行這項作業。 在移轉過程中,您會看到伺服器負載出現峰值。 調整叢集大小是需要長時間執行的程序,且所需時間決定於索引鍵數目,以及與那些索引鍵相關聯之值的大小。
如何擴大和擴增 - Enterprise 和 Enterprise Flash 層
Enterprise 和 Enterprise Flash 層能夠在一個作業中進行擴大和擴增。 其他階層需要針對每個動作進行個別作業。
注意
Enterprise 和 Enterprise Flash 層尚未支援「縮小」或「縮減」作業。
使用 Azure 入口網站進行調整
若要調整快取,在 Azure 入口網站中瀏覽至快取,然後選取 [資源] 功能表中的 [調整]。
若要擴大,請選擇不同的快取類型,然後選擇 [儲存]。
若要擴增,請使用容量滑桿來增加。 容量會以遞增二的方式來增加。 此數字反映要新增多少個基礎的 Redis Enterprise 節點。 此數字一律為二的倍數,其反映要針對主要和複本分區新增的節點。
重要事項
您目前只能擴增、增加容量, 您無法縮減。
快取調整為新層級時,會顯示 [正在調整 Redis 快取] 通知。
調整完成時,狀態會從 [正在調整] 變更為 [執行中]。
使用 PowerShell 進行調整
您可以透過 PowerShell,使用 Update-AzRedisEnterpriseCache Cmdlet 來調整 Azure Cache for Redis 執行個體。 您可以修改 Sku 屬性來擴大執行個體。 您可以修改 Capacity 屬性來擴增執行個體。 下列範例示範如何將名為 myCache 的快取調整為容量為 4 的 Enterprise 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 的 Enterprise E20 (25 GB) 執行個體。
az redisenterprise update --cluster-name "myCache" --resource-group "myGroup" --sku "Enterprise_E20" --capacity 4
調整常見問題集
下列清單包含「Azure Redis 快取」規模調整相關常見問題的解答。
可以向上調整為 Premium 快取,或在其中調整、向下調整嗎?
- 您無法從進階快取向下調整至基本或標準定價層。
- 您可以將一個 進階 快取定價層調整為另一個定價層。
- 您無法直接從基本快取調整至進階快取。 首先,在單一調整作業中從基本調整至標準,然後在後續的調整作業中從標準調整至進階。
- 您無法從進階快取調整為 Enterprise 或 Enterprise Flash 快取。
- 如果在建立進階快取時已啟用叢集,則可變更叢集大小。 如果在建立快取時未啟用叢集,之後依然可以設定叢集。
調整之後,是否必須變更我的快取名稱或存取金鑰?
否,您的快取名稱和金鑰不會在調整作業期間變更。
調整運作方式如何?
- 將基本快取調整為不同的大小時,會關閉該快取,並同時使用新的大小佈建新的快取。 在此期間,快取無法使用,而且快取中的所有資料都會遺失。
-
基本快取在調整為標準快取時,會佈建複本快取,且會從主要快取將資料複製到複本快取。 調整程序期間仍可使用快取。
- 當您將標準、進階、Enterprise 或 Enterprise Flash 快取調整為不同的大小時,會關閉其中一個複本,並重新佈建為新的大小和傳輸的資料,然後另一個複本會先執行容錯移轉,再進行重新佈建,這與其中一個快取節點失敗期間發生的流程類似。
- 當您向外擴充叢集快取時,會將新的分區佈建並新增至 Redis 伺服器叢集。 然後,資料會跨所有分區重新分區化。
- 當您向內縮小叢集快取時,資料會先重新分區化,然後叢集大小會縮減為必要的分區。
- 將快取調整或移轉至不同的叢集時,快取的基礎IP位址可能會變更。 快取的 DNS 記錄會變更,而且會向大部分應用程式顯示。 不過,如果您使用IP位址來設定快取的連線,或設定允許流量流向快取的NSG或防火牆,您的應用程式可能會在 DNS 記錄更新之後連線時發生問題。
我是否會在調整期間遺失快取中的資料?
-
基本 快取調整為新的大小時,會遺失所有資料,且無法在調整作業期間使用快取。
-
基本快取調整為標準快取時,通常會保留快取中的資料。
- 當您將標準、進階、Enterprise 或 Enterprise Flash 快取調整為較大的大小時,通常會保留所有資料。 當您將標準或進階快取調整為較小的大小時,如果原始資料大小超過新大小時,資料可能會遺失。 如果縮小時遺失資料,則會使用 allkeys-lru 收回原則來收回金鑰。
我是否可在調整之後使用進階層的所有功能?
否,某些功能只能在您於進階層中建立快取時進行設定,且無法在調整之後使用。
當您建立進階快取之後,就無法新增這些功能:
- 插入虛擬網路
- 新增區域備援
- 針對每個主要使用多個複本
若要使用上述任何功能,您必須在進階層中建立新的快取執行個體。
我的自訂資料庫設定在調整期間會受到影響嗎?
如果您在快取建立期間為 databases 設定設定了自訂值,請記住某些定價層具有不同的資料庫限制。 以下是在此案例中進行調整時的一些考量:
- 調整為較現有階層具有較低
databases 限制的定價層時:
- 如果您使用預設數字
databases,即所有定價層為 16,則不會遺失資料。
- 如果您要使用的自訂數字
databases,落在您要調整之階層限制範圍內,則會保留此 databases 設定,並且不會遺失資料。
- 如果您要使用的自訂數字
databases,超出新階層的限制,則會將 databases 設定降低至新階層的限制,而且在已移除的資料庫中的所有資料都會遺失。
- 調整為具有與現有階層相同或更高
databases 限制的定價層時,會保留您的 databases 設定,而且不會遺失資料。
當標準、進階、Enterprise 和 Enterprise Flash 快取有適用於可用性的 SLA 時,則沒有適用於資料遺失的 SLA。
是否可以在調整期間使用我的快取?
-
標準、進階、Enterprise 和 Enterprise Flash 快取在調整作業期間會保持可用。 不過,在調整這些快取時可能會發生連線中斷 (從基本調整至標準快取時也一樣)。 這些連線中斷應該很短暫,而且 Redis 用戶端一般而言應可立即重新建立其連線。
- 對於使用作用中異地複寫的 Enterprise 和 Enterprise Flash 快取,在某些情況下,僅調整已連結快取的子集可能會隨著時間推移而引發問題。 建議您盡可能一併調整異地複寫群組中的所有快取。
-
基本快取在將作業調整至不同大小的期間,會處於離線狀態。 從基本調整至標準時,基本快取仍可使用,但可能會遇到短暫的連線中斷。 若發生連線中斷,Redis 用戶端一般而言應可立即重新建立其連線。
有異地複寫的調整限制嗎?
設定被動異地複寫後,您可能會注意到您無法調整快取,或變更叢集中的分區。 兩個快取之間的異地複寫連結可防止您調整作業,或變更叢集中的分區數目。 您必須將快取取消連結之後,才能發出這些命令。 如需詳細資訊,請參閱 設定異地複寫。
設定作用中異地複寫後,您可以調整快取,但有某些限制。 異地復寫群組中的所有快取必須具有相同的大小和容量。 如需詳細資訊,請參閱設定 Enterprise Azure Cache for Redis 執行個體的使用中異地複寫。
不支援的作業
- 您無法從較高的定價層調整至較低的定價層。
- 您無法從進階快取向下調整至標準或基本快取。
- 您無法從標準快取向下調整到基本快取。
- 您可以從基本快取調整到標準快取,但您無法同時變更大小。 如果您需要不同的大小,您可以進行後續調整作業,調整到您需要的大小。
- 您無法直接從基本快取調整至進階快取。 首先,在單一調整作業中從基本調整至標準,然後在後續作業中從標準調整至進階。
- 您無法從進階快取調整為 Enterprise 或 Enterprise Flash 快取。
- 您無法從較大的大小向下調整至 C0 (250 MB) 的大小。
如果調整作業失敗,服務會嘗試還原作業,而且快取會還原成原始大小。
調整需要多長的時間?
調整時間取決於幾個因素。 下列因素可能會影響調整所需的時間:
- 數據量:較大的數據量需要較長的時間才能復寫。
- 高寫入要求:較高的寫入數目表示跨節點或分區複寫更多的數據。
- 高伺服器負載:較高的伺服器負載表示 Redis 伺服器忙碌中,而有限的 CPU 週期可用來完成數據轉散發。
調整快取不是簡單的動作,而且可能需要很長的時間。 在快取不是負載過重的情況下,使用一到兩個分區來擴展快取可能需要花費一到兩個小時。 如果您有更多分片,擴展的時間不會以線性方式增加。
如何分辨調整何時完成?
在 Azure 入口網站中,您可以看到調整作業進行中。 調整完成時,快取的狀態會變更為 [執行中] 。
我需要對我的用戶端應用程式進行任何變更才能使用叢集嗎?
啟用叢集時,只可以使用資料庫 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 叢集模式與進階層上的叢集相同,並遵循開放原始碼叢集規格。 Enterprise 叢集模式的效能可能比較低,但會使用 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 Redis 快取價格。
所有 Redis 用戶端都支援叢集嗎?
許多用戶端程式庫都支援 Redis 叢集,但並非全都支援。 請查看您所使用的程式庫適用的文件,以確認您使用的是支援叢集的程式庫和版本。 StackExchange.Redis 是支援叢集的程式庫之一,其版本較新。 如需其他用戶端的詳細資訊,請參閱 Redis 叢集教學課程的 試用叢集一節。
Redis 叢集通訊協定要求每個用戶端都必須在叢集模式中直接連線至每個分區,並且定義了新的錯誤回應,例如 MOVED 和 CROSSSLOTS。 若您嘗試使用的用戶端程式庫不支援叢集,但含有叢集模式快取,其結果可能是會有許多 MOVED 重新導向例外狀況,或者,如果您執行跨位置的多重金鑰要求,則會中斷您的應用程式。
啟用叢集後,要如何連接到我的快取?
您可以使用連線至未啟用叢集的快取時所用的相同端點、連接埠和金鑰,來連線至您的快取。 Redis 會管理後端上的叢集,因此您不需從用戶端進行管理。
我可以直接連接到我的快取的個別分區嗎?
使用叢集通訊協定時,用戶端必須進行正確的分區連線,才能為您建立共用連線。 如前所述,每個分區都包含一個主要/複本快取組,統稱為快取執行個體。 您可以使用 GitHub 中 Redis 存放庫不穩定 \(英文\) 分支內的 Redis-CLI 公用程式,連線到這些快取執行個體。 使用 -c 參數啟用這個版本時,會實作基本支援。 如需詳細資訊,請參閱 上 https://redis.io中的試用叢集。
您必須使用 -p 參數來指定要連線的正確連接埠。 使用 CLUSTER NODES \(英文\) 命令,來判斷主要和複本節點所使用的確切連接埠。 使用下列連接埠範圍:
- 針對非 TLS 進階層快取,連接埠可在
130XX 範圍內使用
- 針對已啟用 TLS 的進階層快取,連接埠可在
150XX 範圍內使用
- 針對使用 OSS 叢集的 Enterprise 和 Enterprise Flash 快取,初始連線會透過連接埠 10000 來進行。 您可以使用 85XX 範圍內的連接埠來連線到個別節點。 85xx 連接埠將隨著時間推移而變更,因而不應硬式編碼到您的應用程式。
是。 首先,透過擴大快取來確保該快取位於進階層。 接下來,您可以看到叢集設定選項,包括啟用叢集的選項。 請在建立快取後或第一次啟用叢集後變更叢集大小。
重要事項
啟用叢集是無法復原的動作。 快取若已啟用叢集,且只有一個分區,其行為將與大小相同、沒有叢集的快取不同。
所有 Enterprise 和 Enterprise Flash 層快取一律會叢集化。
叢集僅適用於進階、Enterprise 和 Enterprise Flash 快取。
我可以將叢集使用於 Redis ASP.NET 工作階段狀態和輸出快取提供者嗎?
使用 StackExchange.Redis 和叢集時若遇到 MOVE 例外狀況,該怎麼辦?
如果您正在使用 StackExchange.Redis,並且在使用叢集時收到 MOVE 例外狀況,請確定您使用的是 StackExchange.Redis 1.1.603 或更新版本。
Enterprise 層快取上的 OSS 叢集和 Enterprise 叢集有何差異?
OSS 叢集模式與進階層上的叢集相同,並遵循開放原始碼叢集規格。 Enterprise 叢集模式的效能可能比較低,但會使用 Redis Enterprise 叢集,其不需進行任何用戶端變更即可使用。 如需詳細資訊,請參閱 叢集。
Enterprise 層快取使用多少個分區?
與基本、標準和進階層快取不同,Enterprise 和 Enterprise Flash 快取可以利用單一節點上的多個分區。 如需詳細資訊,請參閱分區化設定。
後續步驟