從共用快取移轉至 Azure 受管理的快取服務

重要

Microsoft 建議使用 Azure Redis 快取的所有新開發。 如需選擇 Azure 快取供應專案的目前檔和指引,請參閱 哪一個 Azure 快取供應專案適合我?

使用Microsoft Azure 共用快取移轉至受控快取服務的應用程式,可以透過對應用程式進行最少的變更來完成。 因為受控快取服務使用大部分與共用快取相同的 API,所以使用共用快取存取快取的現有程式碼可以與受控快取服務重複使用。 本主題說明如何進行必要的設定和應用程式變更,以移轉共用快取應用程式以使用受控快取服務。

注意

Azure 共用快取于 2014 年 9 月淘汰。 建議您移至 Azure Redis 快取,但如果您想要移動應用程式,而不變更任何程式碼,您可以移至受控快取服務。 本主題涵蓋移轉至受控快取服務;如需移轉至 Azure Redis 快取的指引,請參閱從 共用快取 遷移至 Azure Redis 快取 (預覽版)

移轉步驟

下列各節說明移轉Microsoft Azure 共用快取應用程式以使用受控快取服務所需的步驟。

  • 選擇快取供應項目

  • 建立快取

  • 設定快取

  • 設定快取用戶端

    • 移除 Shared Caching 設定

    • 使用快取 NuGet 封裝來設定 Cache Client

  • 移轉 ASP.NET 工作階段和頁面輸出 Caching

選擇快取供應項目

下列三個供應專案提供受控快取服務。

  • 基本 - 大小從 128MB 到 1GB 的快取 (每次增量 128MB),具有一個預設具名快取

  • 標準 - 大小介於 1GB 到 10GB 且以 1GB 為增量單位的快取,其中支援通知、高可用性以及最多 10 個具名快取

  • 高級 - 大小從 5GB 到 150GB 的快取 (每次增量 5GB),支援通知、高可用性和最多 10 個具名快取

注意

每個供應項目的價格和功能都不相同。 如需詳細資訊,請參閱適用于 Azure 受控快取服務的快取服務定價常見問題快取供應專案。 此移轉指南的下列設定快取一節也會提供其他詳細資料。

共用快取的所有快取功能都適用于所有三個受控快取服務供應專案,因此移轉的起點是挑選符合共用快取帳戶大小的受控快取服務快取供應專案。 部署應用程式之後,您可以監視快取的效能,並根據應用程式的需求相應增加或減少。 如需監視效能和調整的詳細資訊,請參閱監視 Azure 受控快取服務調整 Azure 快取受控快取服務

建立快取

受控快取服務中的快取實例是使用 PowerShell 腳本建立的。

重要

使用 PowerShell Cmdlet 建立受控快取服務實例之後,就可以在Azure 管理入口網站中檢視和設定實例。

建立受控快取服務實例

  1. 開啟 Azure PowerShell 命令視窗。

    注意

    如需安裝和使用 Azure PowerShell 的指示,請參閱 如何安裝和設定 Azure PowerShell

  2. 叫用 Add-AzureAccount Cmdlet,並輸入與您帳戶相關的電子郵件地址及密碼。

    注意

    如果您已使用帳戶的憑證來設定 Azure PowerShell,那麼就可以跳過此步驟。 如需將 Azure PowerShell 與 Azure 帳戶連接的詳細資訊,請參閱 如何安裝和設定 Azure PowerShell

  3. 叫用 New-AzureManagedCache Cmdlet 並指定名稱、區域、快取供應項目以及快取大小。 如果是下列範例,基本的 128MB 快取會在 contosocache 地理區域中以 South Central US 的名稱建立。

    New-AzureManagedCache -Name contosocache -Location "South Central US" -Sku Basic -Memory 128MB
    

    注意

    如需建立快取時可使用之參數和值的完整清單,請參閱 New-AzureManagedCache Cmdlet 文件。

  4. 叫用 PowerShell Cmdlet 之後,可能需要數分鐘的時間建立快取。 建立快取之後,您的新快取具有 [ 執行 中] 狀態,且已準備好與預設設定搭配使用,而且可以在 Azure 管理入口網站中檢視和設定。

    您可以在 Azure PowerShell 視窗中監視建立進度。 一旦快取可供使用,New-AzureManagedCache Cmdlet 會顯示快取資訊,如以下範例所示。

    PS C:\> Add-AzureAccount
    VERBOSE: Account "user@domain.com" has been added.
    VERBOSE: Subscription "MySubscription" is selected as the default subscription.
    VERBOSE: To view all the subscriptions, please use Get-AzureSubscription.
    VERBOSE: To switch to a different subscription, please use Select-AzureSubscription.
    PS C:\> New-AzureManagedCache -Name contosocache -Location "South Central US" -Sku Basic -Memory 128MB
    VERBOSE: Intializing parameters...
    VERBOSE: Creating prerequisites...
    VERBOSE: Verify cache service name...
    VERBOSE: Creating cache service...
    VERBOSE: Waiting for cache service to be in ready state...
    
    
    Name     : contosocache
    Location : South Central US
    State    : Active
    Sku      : Basic
    Memory   : 128MB
    
    
    
    PS C:\>
    

設定快取

受控快取服務支援具名快取,可讓您彈性地為不同的資料集設定不同的快取選項。 每個快取都有預設的具名快取,而在標準版和進階版快取供應項目中,最多可以設定 9 個額外的具名快取。 每個具名快取都具有其自己的個別設定,例如高可用性、通知、以及自訂收回和到期原則。 具名快取設定會在快取的 [設定] 索引標籤中的 [管理入口網站] 中設定。

Named Caches in Windows Azure Cache Service

下表列出受控快取服務與共用快取之間的快取設定差異。

功能 受控快取服務支援 共用快取支援

名稱

已設定 [預設] 快取,若需要,在標準版和進階版快取供應項目中,最多可以設定 9 個額外的具名快取。

只有預設快取。

高可用性

對快取中的項目提供高可用性。 如果因為失敗而導致項目遺失,快取中的項目仍有備份複本可供使用。

「標準」和「進階版」快取供應專案提供高可用性,而且無法在「基本」快取供應專案中取得。 如需詳細資訊,請參閱適用于 Azure 受控快取服務的快取供應專案和適用于 Azure 受控快取服務的高可用性

沒有高可用性。

通知

通知可讓您的應用程式在快取中發生各種不同的快取作業時,非同步接收通知。

標準版和進階版快取供應項目中包括通知,而基本版中則未包括。 如需詳細資訊,請參閱適用于 Azure 受控快取服務的快取供應專案和Azure 受控快取服務的通知

不支援。

收回原則

選擇已啟用,其使用 LRU (最近最少使用) 演算法來判斷要收回或停用的項目。 預設值為 [已啟用]

只有 LRU。

時間 (分鐘)

項目在快取中的預設到期時間為 10 分鐘,但可設定。 新增至快取之個別專案的到期時間,也可以使用新增至快取的專案時,使用 AddPut 的多載來指定。 [時間 (分鐘)] 和 [到期原則] 一併使用以判斷項目到期時間。

預設到期時間為 24 小時,且不可設定。 當專案新增至快取時,可以使用 AddPut 的多載來設定新增至快取的個別專案的到期時間。

到期原則

總共有三種類型的到期原則永不絕對,和滑動。 指定 [絕對] 時,[時間 (分鐘)] 指定的到期間隔會在將項目新增至快取時開始計算。 指定 [滑動] 時,每次在快取中存取項目就會重設間隔。 指定 [無] 時,[時間 (分鐘)] 必須設為 0,項目將不會過期。 預設值為 [絕對]

如需詳細資訊,請參閱Azure 受控快取服務的到期和收回

到期原則為絕對。 到期間隔是從項目新增至快取時開始計算。

若要設定受控快取服務設定最符合預設共用快取設定,請使用下列設定。

  • [到期原則] 設為 [絕對]

  • [時間 (分鐘)] 設為 1440

  • [通知] 設為 [停用] (標準版和進階版快取供應項目可設定,基本版快取供應項目則永遠停用)

  • 高可用性設定組為[已停用] ([可針對標準和進階版快取供應專案設定],一律停用基本快取供應專案)

  • [收回] 設為 [啟用]

設定快取用戶端

建立並設定快取後,下一步是新增必要的設定和參考,讓快取用戶端可存取快取。 受控快取服務支援下列用戶端。

  • Azure 網站

  • Azure 雲端服務 Web 角色和工作角色

  • Azure 虛擬機器

若要設定快取用戶端,請對每個快取用戶端執行下列步驟。

  • 移除 Shared Caching 設定

  • 使用快取 NuGet 封裝來設定 Cache Client

移除 Shared Caching 設定

必須先移除現有的共用快取組態和元件參考,才能設定用戶端應用程式受控快取服務。 如果使用 共用快取 NuGet 套件來設定共用快取,則可以卸載共用快取 NuGet套件來移除設定;否則必須手動移除。

  • 解除安裝 Shared Caching NuGet 封裝

  • 手動移除 Shared Caching 設定

解除安裝 Shared Caching NuGet 封裝

若要卸載共用快取 NuGet套件,請以滑鼠右鍵按一下方案總管中的用戶端專案,然後選擇 [管理NuGet套件]。 選擇 [已安裝封裝] 節點,並在 [搜尋已安裝封裝] 方塊中輸入 [Caching]。 選擇 [Azure Shared Caching],按一下 [解除安裝],再按一下 [關閉]

Uninstall Shared Caching NuGet Package

注意

如果清單中沒有Microsoft Azure 共用快取 NuGet套件,請按一下 [關閉],然後遵循手動移除共用快取組態中的步驟。

卸載共用快取 NuGet套件會移除 共用快取 元件,以及用戶端應用程式或 web.config 應用程式中的共用快取專案 app.config 。 由於部分自訂設定在解除安裝 NuGet 封裝時不會加以移除,請開啟 web.configapp.config,並確定已完全移除以下元素。

  • 確定已從 configSections 項目移除 dataCacheClients 項目。 請勿移除整個 configSections 項目,只需移除 dataCacheClients 項目 (若存在)。

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • 確定已移除 dataCacheClients 區段。 dataCacheClients 區段會類似下列範例。

    <dataCacheClients>
      <dataCacheClient name="default">
        <hosts>
          <host name="MyCacheNamespace.cache.windows.net" cachePort="22233" />
        </hosts>
    
        <securityProperties mode="Message">
          <messageSecurity 
            authorizationInfo="Your authorization token will be here.">
          </messageSecurity>
        </securityProperties>
      </dataCacheClient>
    </dataCacheClients>
    

移除共用快取組態之後,您可以如下列使用快取NuGet套件設定快取用戶端一節中所述設定快取用戶端。

手動移除 Shared Caching 設定

若要手動移除共用快取組態,您必須從 app.configweb.config 移除共用快取元件參考和共用快取組態。

若要移除共用快取元件參考,請選取方案總管中的快取用戶端專案,然後展開 [參考]資料夾。 在以下清單中的每個組件上,在 [方案總管] 中的 [參照] 資料夾上按一下滑鼠右鍵,再選擇 [移除]。 若用戶端為 Web 專案,也請移除 Microsoft.Web.DistributedCache

  • Microsoft.ApplicationServer.Caching.Client

  • Microsoft.ApplicationServer.Caching.Core

  • Microsoft.WindowsFabric.Common

  • Microsoft.WindowsFabric.Data.Common

若要移除共用快取組態,請開啟 web.config 快取用戶端專案的 或 app.config ,並移除下列兩個專案。

  • dataCacheClients 元素中移除 configSections 項目。 請勿移除整個 configSections 項目,只需移除 dataCacheClients 項目 (若存在)。

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • 移除的 dataCacheClients 區段必須與下列範例類似。

    <dataCacheClients>
      <dataCacheClient name="default">
        <hosts>
          <host name="MyCacheNamespace.cache.windows.net" cachePort="22233" />
        </hosts>
    
        <securityProperties mode="Message">
          <messageSecurity 
            authorizationInfo="Your authorization token will be here.">
          </messageSecurity>
        </securityProperties>
      </dataCacheClient>
    </dataCacheClients>
    

一旦移除了這些項目,您就可以遵循下一節中的步驟來設定您的快取用戶端。

使用快取 NuGet 封裝來設定 Cache Client

受控快取服務提供NuGet套件,以新增必要的組態和元件參考,以允許快取用戶端存取快取。

重要

使用 受控快取服務 NuGet 套件設定快取用戶端之前,請確定已從 web.config 或 用戶端專案的 或 app.config 完全移除共用快取組態,如上一節所述。

重要

這些步驟需要 NuGet 封裝管理員 2.6.40627.9000 版或更高版本。 若要安裝最新的NuGet 封裝管理員,請參閱NuGet 封裝管理員

若要使用受控快取服務 NuGet套件,請以滑鼠右鍵按一下方案總管中的用戶端專案,然後選擇 [管理NuGet套件]。

選取 [Azure Caching],並依序按一下 [安裝] 與 [我接受]。 當封裝安裝到用戶端專案後,按一下 [關閉] 即可關閉 [管理 NuGet 封裝] 視窗。

注意

如果 [Azure Caching] 未出現在清單中,請在 [線上搜尋] 文字方塊中輸入 WindowsAzure.Caching

Windows Azure Cache NuGet Package

當受控快取服務 NuGet套件安裝至用戶端專案時,它會新增必要的組態和元件參考,讓用戶端應用程式可以存取快取。

在快取專案的 web.configapp.config 中會新增數個項目。

  1. 會新增兩個區段到 configSections,名為 dataCacheClientscacheDiagnostics

    <!-- Non-cache sections omitted for space -->
      <configSections>
        <section name="dataCacheClients" 
            type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" 
            allowLocation="true" 
            allowDefinition="Everywhere" />
    
        <section name="cacheDiagnostics" 
            type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon" 
            allowLocation="true" 
            allowDefinition="Everywhere" />
      </configSections>
    
  2. 新增至 dataCacheClients 區段的 configuration 區段。

    <!-- Non-cache sections omitted for space -->
      <dataCacheClients>
        <dataCacheClient name="default">
          <!--To use the in-role flavor of Azure Caching, set identifier to be the cache cluster role name -->
          <!--To use the Azure Caching Service, set identifier to be the endpoint of the cache cluster -->
          <autoDiscover
            isEnabled="true" 
            identifier="[Cache role name or Service Endpoint]" />
          <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
          <!--Use this section to specify security settings for connecting to your cache. 
              This section is not required if your cache is hosted on a role that is a part 
              of your cloud service. -->
          <!--<securityProperties mode="Message" sslEnabled="false">
            <messageSecurity authorizationInfo="[Authentication Key]" />
          </securityProperties>-->
        </dataCacheClient>
      </dataCacheClients>
    

    [快取角色名稱或服務端點] 取代為管理入口網站中快取儀表板上顯示的端點 URL。

    Endpoint URL for Windows Azure Cache Service
    在此範例中,快取名為 applicationcache,且端點 URL 會 applicationcache.cache.windows.net

    <autoDiscover isEnabled="true" identifier="applicationcache.cache.windows.net" />
    

    取消批註 securityProperties 區 段,並將 [驗證金鑰] 取代為驗證金鑰。

    <!--Use this section to specify security settings for connecting to your cache. 
        This section is not required if your cache is hosted on a role that is a part 
        of your cloud service. -->
    <!--<securityProperties mode="Message" sslEnabled="false">
      <messageSecurity authorizationInfo="[Authentication Key]" />
    </securityProperties>-->
    

    按一下快取儀表板中的 [管理金鑰],可以在管理入口網站中找到驗證金鑰。

    Manage Access Keys for Windows Azure Cache Service

    警告

    必須適當地配置這些設定,否則用戶端將無法存取快取。

對於雲端服務專案,受控快取服務 NuGet套件也會將ClientDiagnosticLevel設定新增至 ConfigurationSettingsServiceConfiguration.cscfg 快取用戶端角色的 。 下列範例是 WebRole1ClientDiagnosticLevel為 1 的檔案區段 ServiceConfiguration.cscfg ,這是預設ClientDiagnosticLevel

<Role name="WebRole1">
  <Instances count="1" />
  <ConfigurationSettings>
    <!-- Other settings omitted for space... -->
    <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />
  </ConfigurationSettings>
</Role>

注意

如需快取診斷層級的詳細資訊,請參閱關於 Azure 受控快取服務的 ClientDiagnosticLevel

除了新增必要的組態之外,受控快取服務 NuGet套件也會新增下列元件參考。

  • Microsoft.ApplicationServer.Caching.Client.dll

  • Microsoft.ApplicationServer.Caching.Core.dll

  • Microsoft.ApplicationServer.Caching.AzureCommon.dll

  • Microsoft.ApplicationServer.Caching.AzureClientHelper.dll

  • Microsoft.WindowsFabric.Common.dll

  • Microsoft.WindowsFabric.Data.Common.dll

如果專案是 Web 專案,則也會新增下列組件參考。

  • Microsoft.Web.DistributedCache.dll

注意

受控快取服務和共用快取共用相同的 API,雖然元件名稱相同,但元件本身不同且位於不同的位置。 受控快取服務 NuGet套件將會移除共用快取元件參考,並新增正確的受控快取服務元件參考。 受控快取服務元件位於 C:\Program Files\Microsoft SDKs\Azure\.NET SDK[SDK Version]\ref\Caching 資料夾中。

移轉 ASP.NET 工作階段和頁面輸出 Caching

一旦 ASP.NET Web 專案從Microsoft Azure 共用快取移轉至受控快取服務,如設定快取用戶端中所述,只需要進行最少的變更,才能在快取中儲存 ASP.NET 會話狀態或頁面輸出快取。 若要將 ASP.NET 工作階段狀態儲存在快取中,請將下列區段新增至 system.web 中的 web.config

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
  <providers>
    <add name="AppFabricCacheSessionStoreProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" useBlobMode="true" dataCacheClientName="default" />
  </providers>
</sessionState>

注意

如果您的 ASP.NET Web 角色已設定為使用會話狀態提供者進行快取,則此區段已經存在,而且不需要任何變更。

更新 cacheName 來指定保存工作階段狀態的快取。 使用 default 來指定預設快取。

若要將頁面輸出 Caching 儲存在快取中,請將下列區段新增至 system.web

<caching>
  <outputCache defaultProvider="DistributedCache">
    <providers>
      <add name="DistributedCache" type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" />
    </providers>
  </outputCache>
</caching>

注意

如果您的 ASP.NET Web 角色已設定為使用輸出快取提供者進行快取,則此區段已經存在,而且不需要變更。

更新 cacheName 來指定保存工作階段狀態的快取。 使用 default 來指定預設快取。

在您要快取輸出的每一個頁面中加入 OutputCache 指示詞。

<%@ OutputCache Duration="60" VaryByParam="*" %>

在此範例中,快取的頁面資料在快取中保留 60 秒,而每一個參數組合會快取不同版本的頁面。 如需可用選項的詳細資訊,請參閱 OutputCache 指示詞

另請參閱

概念

Azure 受管理快取服務的快取供應項目
Azure 受管理快取服務的容量規劃
適用於 Azure 受管理的快取服務工作階段狀態提供者
Azure 受管理快取服務的頁面輸出快取提供者

其他資源

Azure 受管理快取服務