クイックスタート: ASP.NET Web アプリで Azure Cache for Redis を使用する

このクイック スタートでは、Visual Studio 2019 を使用して、Azure Cache for Redis に接続してキャッシュからデータを格納および取得する ASP.NET Web アプリケーションを作成します。 次に、アプリを Azure App Service にデプロイします。

GitHub のコードにスキップする

GitHub でリポジトリ https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/aspnet をクローンします。

前提条件

キャッシュの作成

次に、アプリ用のキャッシュを作成します。

  1. キャッシュを作成するには、Azure portal にサインインし、 [リソースの作成] を選択します。

    Create a resource is highlighted in the left navigation pane.

  2. [新規] ページで、 [データベース] を選択し、 [Azure Cache for Redis] を選択します。

    On New, Databases is highlighted, and Azure Cache for Redis is highlighted.

  3. [新規 Redis Cache] ページで、新しいキャッシュの設定を構成します。

    設定 値を選択する 説明
    サブスクリプション ドロップダウンで、ご自身のサブスクリプションを選択します。 この新しい Azure Cache for Redis インスタンスが作成されるサブスクリプション。
    リソース グループ ドロップ ダウンでリソース グループを選択するか、 [新規作成] を選択し、新しいリソース グループの名前を入力します。 その中にキャッシュやその他のリソースを作成するリソース グループの名前。 すべてのアプリ リソースを 1 つのリソース グループに配置することで、それらをまとめて簡単に管理または削除できます。
    DNS 名 一意の名前を入力します。 キャッシュ名は 1 から 63 文字の文字列で、数字、英字、ハイフンのみを使用する必要があります。 名前の先頭と末尾には数字または文字を使用する必要があり、連続するハイフンを含めることはできません。 キャッシュ インスタンスの "ホスト名" は、<DNS name>.redis.cache.windows.net です。
    場所 ドロップ ダウンで場所を選択します。 キャッシュを使用する他のサービスの近くのリージョンを選択します。
    キャッシュの種類 ドロップ ダウンでレベルを選択します。 レベルによって、キャッシュに使用できるのサイズ、パフォーマンス、および機能が決まります。 詳細については、Azure Cache for Redis の概要に関するページを参照してください。
  4. [ネットワーク] タブを選択するか、ページの下部にある [ネットワーク] ボタンを選択します。

  5. [ネットワーク] タブで、接続方法を選択します。

  6. [次へ: 詳細] タブを選択するか、ページの下部にある [次へ: 詳細] ボタンを選択して、[詳細] タブを表示します。

    Screenshot showing the Advanced tab in the working pane and the available option to select.

    • Basic または Standard キャッシュを利用する場合は、非 TLS ポートの選択をオンにします。 Microsoft Entra 認証を有効にするかどうかを選択することもできます。
    • Premium キャッシュを利用する場合は、非 TLS ポート、クラスタリング、マネージド ID、データ永続化の設定を構成します。 Microsoft Entra 認証を有効にするかどうかを選択することもできます。
  7. ページの下部にある [次へ: タグ] タブを選択するか、ページの下部にある [次へ: タグ] ボタンを選択します。

  8. 必要に応じて、 [タグ] タブで、リソースを分類する場合は名前と値を入力します。

  9. [Review + create](レビュー + 作成) を選択します。 [確認および作成] タブが表示され、Azure によって構成が検証されます。

  10. 緑色の検証に成功のメッセージが表示された後、 [作成] を選択します。

キャッシュが作成されるまで、しばらく時間がかかります。 Azure Cache for Redis の [概要] ページで進行状況を監視できます。 [状態] に "実行中" と表示されている場合は、キャッシュを使用する準備ができています。

Azure portal からホスト名、ポート、アクセス キーを取得する

Azure Cache for Redis サーバーに接続するには、キャッシュ クライアントにキャッシュのホスト名、ポート、およびキーが必要です。 クライアントによっては、これらの項目を参照するための名前が若干異なる場合があります。 ホスト名、ポート、およびキーは Azure portal から取得できます。

  • アクセス キーを取得するには、キャッシュの左側のナビゲーションから [アクセス キー] を選択します。

    Azure Cache for Redis keys

  • ホスト名とポートを取得するには、キャッシュの左側のナビゲーションから [プロパティ] を選択します。 ホスト名は、<DNS 名>.redis.cache.windows.net の形式になります。

    Azure Cache for Redis properties

CacheSecrets.config ファイルを編集するには

  1. コンピューター上に CacheSecrets.config というファイルを作成します。そのファイルをサンプル アプリケーションのソース コードでチェックインされない場所に配置します。 このクイック スタートでは、CacheSecrets.config ファイルを C:\AppSecrets\CacheSecrets.config に配置します。

  2. CacheSecrets.config ファイルを編集します。 次の内容を追加します。

    <appSettings>
        <add key="CacheConnection" value="<cache-name>.redis.cache.windows.net,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/>
    </appSettings>
    
  3. <cache-name> は実際のキャッシュ ホスト名に置き換えます。

  4. <access-key> は、実際のキャッシュのプライマリ キーに置き換えます。

    ヒント

    セカンダリ アクセス キーは、プライマリ アクセス キーを再生成する間の代替キーとして、キー ローテーションのときに使用できます。

  5. ファイルを保存します。

MVC アプリケーションを更新する

ここでは、Azure Cache for Redis に対する簡単なテストをビューに表示する MVC アプリケーションを扱います。

web.config ファイルがキャッシュに接続するしくみ

アプリケーションをローカルで実行すると、CacheSecrets.config 内の情報が、Azure Cache for Redis インスタンスへの接続に使われます。 後でこのアプリケーションを Azure にデプロイできます。 そのときに、アプリケーションがこのファイルの代わりにキャッシュ接続情報の取得に使用するアプリ設定を Azure 内で構成します。

CacheSecrets.config はアプリケーションと一緒に Azure にデプロイされず、アプリケーションのローカルなテストの間にだけ使われます。 キャッシュ データへの不正アクセスを防ぐため、この情報は可能な限り安全に保持してください。

web.config ファイルを更新するには

  1. ソリューション エクスプローラーで、web.config ファイルを開きます。

    Web.config

  2. web.config ファイルでは、アプリケーションをローカルで実行するための <appSettings> 要素で設定できます。

    <appSettings file="C:\AppSecrets\CacheSecrets.config">

<appSettings> 要素内のマークアップは、ASP.NET ランタイムによって外部ファイルの内容と結合されます。 指定したファイルが見つからない場合、このファイル属性は無視されます。 このアプリケーションのソース コードにシークレット (キャッシュへの接続文字列) は含まれていません。 Web アプリを Azure にデプロイするときに、CacheSecrets.config ファイルはデプロイされません。

StackExchange.Redis のインストール

ソリューションを実行するには StackExchange.Redis パッケージが必要です。 インストールするには、次の手順を使用します。

  1. Visual Studio 用の StackExchange.Redis NuGet パッケージを使うようにアプリを構成するには、[ツール] > [NuGet パッケージ マネージャー] > [パッケージ マネージャー コンソール] の順に選びます。

  2. [Package Manager Console] ウィンドウで、次のコマンドを実行します。

    Install-Package StackExchange.Redis
    
  3. NuGet パッケージがダウンロードされ、クライアント アプリケーションが StackExchange.Redis クライアントを使用して Azure Cache for Redis にアクセスするために必要なアセンブリ参照が追加されます。

RedisConnection を使用してキャッシュに接続する

キャッシュへの接続は RedisConnection クラスによって管理されます。 まず、ContosoTeamStats/Controllers/HomeController.cs の次のステートメントで接続が確立されます。

   private static Task<RedisConnection> _redisConnectionFactory = RedisConnection.InitializeAsync(connectionString: ConfigurationManager.AppSettings["CacheConnection"].ToString()););

CacheConnection シークレットの値には、シークレット マネージャー構成プロバイダーを使用してアクセスします。この値はパスワード パラメーターとして使用されます。

RedisConnection.cs で、StackExchange.Redis 名前空間がコードに追加されていることがわかります。 これは RedisConnection クラスに必要です。

using StackExchange.Redis;

RedisConnection のコードは、StackExchange.Redis からの ConnectionMultiplexer インスタンスを管理することによって、キャッシュへの正常な接続が常に存在することを保証します。 接続が失われ、自動的に再接続できない場合、RedisConnection クラスによって再び接続が作成されます。

詳細については、StackExchange.Redis と、GitHub リポジトリのコードを参照してください。

サンプルのレイアウト ビュー

このサンプルのホーム ページ レイアウトは、_Layout.cshtml ファイルに格納されます。 このページから [Azure Cache for Redis テスト] をクリックして実際のキャッシュ テストを開始します。

  1. ソリューション エクスプローラーで、[ビュー]>[共有] フォルダーを順に展開します。 次に _Layout.cshtml ファイルを開きます。

  2. <div class="navbar-header"> に次の行があります。

    @Html.ActionLink("Azure Cache for Redis Test", "RedisCache", "Home", new { area = "" }, new { @class = "navbar-brand" })
    

    screenshot of welcome page

キャッシュのデータの表示

サンプル出力を確認するには、ホーム ページから [Azure Cache for Redis テスト] を選択します。

  1. ソリューション エクスプローラーで、[Views] フォルダーを展開し、[Home] フォルダーを右クリックします。

  2. このコードは RedisCache.cshtml ファイルにあります。

    @{
        ViewBag.Title = "Azure Cache for Redis Test";
    }
    
    <h2>@ViewBag.Title.</h2>
    <h3>@ViewBag.Message</h3>
    <br /><br />
    <table border="1" cellpadding="10">
        <tr>
            <th>Command</th>
            <th>Result</th>
        </tr>
        <tr>
            <td>@ViewBag.command1</td>
            <td><pre>@ViewBag.command1Result</pre></td>
        </tr>
        <tr>
            <td>@ViewBag.command2</td>
            <td><pre>@ViewBag.command2Result</pre></td>
        </tr>
        <tr>
            <td>@ViewBag.command3</td>
            <td><pre>@ViewBag.command3Result</pre></td>
        </tr>
        <tr>
            <td>@ViewBag.command4</td>
            <td><pre>@ViewBag.command4Result</pre></td>
        </tr>
        <tr>
            <td>@ViewBag.command5</td>
            <td><pre>@ViewBag.command5Result</pre></td>
        </tr>
    </table>
    

アプリをローカルで実行する

既定では、プロジェクトはテストとデバッグのためにアプリを IIS Express にローカルにホストするように構成されます。

アプリをローカルで実行するには

  1. Visual Studio で [デバッグ]>[デバッグの開始] の順に選択してアプリをビルドし、テストとデバッグのためにアプリをローカルで起動します。

  2. ブラウザーで、ナビゲーション バーの [Azure Cache for Redis Test] を選択します。

  3. 次の例では、以前に Message キーにキャッシュされた値がありました。この値は、ポータルの Azure Cache for Redis コンソールを使用して設定されています。 アプリは、そのキャッシュ値を更新しました。 また、アプリは PING および CLIENT LIST コマンドも実行しました。

    Screenshot of simple test completed local

Azure に発行して実行する

アプリのローカル テストが正常に終了したら、アプリを Azure にデプロイして、クラウドで実行します。

アプリを Azure に発行するには

  1. Visual Studio で、ソリューション エクスプローラーのプロジェクト ノードを右クリックします。 [発行] を選択します。

    Publish

  2. [Microsoft Azure App Service][新規作成][発行] の順に選択します。

    Publish to App Service

  3. [App Service の作成] ダイアログ ボックスで、次のように変更します。

    設定 推奨値 説明
    アプリ名 既定値を使用します。 アプリ名は、Azure へのデプロイ時にアプリのホスト名になります。 必要に応じて、名前を一意にするためにタイムスタンプのサフィックスが追加される場合があります。
    [サブスクリプション]: 。 Azure サブスクリプションを選択します。 関連するホスティング料金は、このサブスクリプションに請求されます。 複数の Azure サブスクリプションがある場合は、適切なサブスクリプションを選択したことを確認します。
    リソース グループ キャッシュを作成したものと同じリソース グループを使います (TestResourceGroup など)。 リソース グループは、すべてのリソースをグループとして管理するときに便利です。 後でアプリを削除する必要があるときは、グループを削除するだけで済みます。
    App Service プラン [新規] を選択し、TestingPlan という名前で新しい App Service プランを作成します。
    キャッシュを作成するときに使ったものと同じ [場所] を使います。
    サイズでは [Free] を選びます。
    App Service プランでは、Web アプリを実行するための一連のコンピューティング リソースを定義します。

    App Service dialog box

  4. App Service のホスティング設定を構成したら、[作成] を選択します。

  5. Visual Studio の [出力] ウィンドウを監視して、発行の状態を確認します。 アプリが発行されると、アプリの URL がログに記録されます。

    Publishing output

キャッシュ用のアプリの設定を追加する

新しいアプリが発行されたら、新しいアプリの設定を追加します。 この設定は、キャッシュの接続情報を格納するために使われます。

アプリの設定を追加するには

  1. Azure portal の上部にある検索バーにアプリ名を入力し、作成した新しいアプリを検索します。

    Find app

  2. キャッシュへの接続に使用する CacheConnection という名前の新しいアプリ設定をアプリに追加します。 CacheSecrets.config ファイルで CacheConnection 用に構成したものと同じ値を使います。 値には、キャッシュのホスト名とアクセス キーが含まれます。

    Add app setting

Azure でアプリを実行する

  1. ブラウザーで、アプリの URL にアクセスします。 URL は、Visual Studio 出力ウィンドウの発行操作の結果に表示されます。 Azure portal の作成したアプリの [概要] ページにも表示されます。

  2. ローカル バージョンで行ったように、ナビゲーション バーの [Azure Cache for Redis テスト] を選択してキャッシュ アクセスをテストします。

リソースをクリーンアップする

このクイックスタートを引き続き使用する場合、作成したリソースを保持して再利用できます。

クイック スタートのサンプル アプリケーションの使用を終える場合は、課金を避けるために、このクイック スタートで作成した Azure リソースを削除することができます。

重要

リソース グループを削除すると、元に戻すことができません。 リソース グループを削除すると、そのリソース グループ内のすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 このサンプルをホストするためのリソースを、保持するリソースが含まれる既存のリソース グループ内に作成した場合、リソース グループを削除する代わりに、左側で各リソースを個別に削除できます。

リソース グループを削除するには

  1. Azure portal にサインインし、 [リソース グループ] を選択します。

  2. [名前でフィルター] ボックスにリソース グループの名前を入力します。 この記事の手順では、TestResources という名前のリソース グループを使用しました。 リソース グループの結果一覧で、[...] を選択し、[リソース グループの削除] を選択します。

    Delete

  3. リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにリソース グループの名前を入力し、[削除] を選択します。

しばらくすると、リソース グループとそのリソースのすべてが削除されます。

次のステップ