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

このクイックスタートでは、Azure Cache for Redis を、Azure Cache for Redis に接続してキャッシュからデータを格納および取得する ASP.NET Core Web アプリケーションに組み込みます。

キャッシュ プロバイダーは、ASP.NET Core Web アプリで使用できます。 既存のコードの変更を最小限にして Redis の使用をすぐに開始するには、次を参照してください。

コードにスキップする

この記事では、サンプル アプリのコードを変更して、Azure Cache for Redis に接続する動作アプリを作成する方法について説明します。

すぐにコードに移動したい場合は、GitHub 上の ASP.NET Core クイックスタート サンプルを参照してください。

この記事で説明されている手順の完成したソース コードを確認するには、Azure Cache for Redis サンプル GitHub リポジトリをクローンしてから、quickstart/aspnet-core ディレクトリに移動します。

quickstart/aspnet-core ディレクトリは、Azure Developer CLI テンプレートとしても構成されます。 オープンソースの azd ツールを使用して、ローカル環境から Azure へのプロビジョニングとデプロイを効率化します。 必要に応じて、以下のように azd up コマンドを実行して Azure Cache for Redis インスタンスを自動的にプロビジョニングし、それに接続するようにローカル サンプル アプリを構成します。

azd up

eShop サンプルを調べる

次の手順として、Redis キャッシュ プロバイダーを使用する ASP.NET Core eShop という、ASP.NET Core キャッシュ プロバイダーを実演する現実世界シナリオの eShop アプリケーションを確認できます。

次のような機能が含まれます。

  • Redis 分散キャッシュ
  • Redis セッション状態プロバイダー

デプロイ手順は、GitHub の ASP.NET Core クイックスタート サンプルREADME.md ファイルに記載されています。

前提条件

キャッシュの作成

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

    Azure portal の左側のナビゲーション ウィンドウ上で強調表示されている [リソースの作成] オプションを示すスクリーンショット。

  2. [作業の開始] ペインの検索バーに「Azure Cache for Redis」と入力します。 検索結果で、Azure Cache for Redis を見つけた後、[作成] を選択します。

    検索ボックスに Azure Cache for Redis が入力され、[作成] ボタンが強調表示されている Azure Marketplace を示すスクリーンショット。

  3. [新しい Redis Cache] ペインの [基本] タブで、以下のキャッシュの設定を構成します。

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

  5. [ネットワーク] タブで、キャッシュで使用する接続方法を選択します。

  6. [詳細] タブを選択するか、[次へ: 詳細] を選択します。

  7. [詳細設定] タブで、[Microsoft Entra 認証] チェックボックスをオンにして、Microsoft Entra 認証を有効にします。

    [詳細] ペインと選択できるオプションを示すスクリーンショット。

    重要

    最適なセキュリティを確保するため、可能であれば、キャッシュに対する要求を認可するのに Microsoft Entra ID とマネージド ID を使用することをお勧めします。 Microsoft Entra ID とマネージド ID を使用した認可は、共有アクセス キー認可よりも優れたセキュリティと使いやすさを備えています。 キャッシュでマネージド ID を使用する方法の詳細については、「キャッシュ認証での Microsoft Entra ID の使用」を参照してください。

  8. (省略可能) [タグ] タブを選択するか、[次へ: タグ] を選択します。

  9. (省略可能) キャッシュ リソースを分類したい場合は、[タグ] タブで、タグの名前と値を入力します。

  10. [確認および作成] ボタンを選択します。

    [確認および作成] タブでは、Azure が構成を自動的に検証します。

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

新しいキャッシュのデプロイは数分で完了します。 デプロイの進行状況は、Azure Cache for Redis の [概要] ペインで監視できます。 [状態][実行中] と表示されると、キャッシュの使用の準備が完了しています。

ホスト名を取得する

Azure Cache for Redis サーバーに接続するには、キャッシュ クライアントにキャッシュのホスト名や他の情報が必要です。 一部のクライアントは、これらの項目を若干異なる名前を使用して参照している場合があります。 ホスト名は Azure portal で取得できます。

  1. Azure portal で、キャッシュに移動します。
  2. サービス メニューで、[概要] を選択します。
  3. [基本][ホスト名] で、[コピー] アイコンを選択してホスト名の値をコピーします。 ホスト名の値の形式は <DNS name>.redis.cache.windows.net です。

ホスト名が強調表示された Azure Cache for Redis プロパティを示すスクリーンショット。

新しい Redis ユーザー アクセス ポリシーを追加する

Azure Cache for Redis にアクセスする ID には、データ アクセス ポリシーを割り当てる必要があります。 この例では、Azure CLI または Visual Studio へのサインインに使用するのと同じ Microsoft Entra ID アカウントにデータ アクセス ポリシーを割り当てます。

  1. Azure portal で、キャッシュに移動します。

  2. サービス メニューの [設定] で、[データ アクセスの構成] を選択します。

  3. [データ アクセスの構成] ペインで、[追加]>[新しい Redis ユーザー] を選択します。

    [新しい Redis ユーザー] が強調表示された [データ アクセスの構成] ペインを示すスクリーンショット。

  4. [新しい Redis ユーザー] ページで、[データ共同作成者] ポリシーを選択してから、[次へ: Redis ユーザー] を選択します。

  5. [メンバーの選択] を選択してポップアップ メニューを開きます。 自分のユーザー アカウントを検索し、結果でそれを選択します。

    [新しい Redis ユーザー] ペインの [Redis ユーザー] タブで [メンバーの選択] が強調表示されているスクリーンショット。

  6. [確認と割り当て] を選択して、選択したユーザーにポリシーを割り当てます。

ホスト名のローカル シークレットを追加する

コマンド ウィンドウで次のコマンドを実行して、RedisHostName という新しいシークレットを保存します。 このコード内のプレースホルダー (山かっこを含む) をキャッシュ名とプライマリ アクセス キーに置き換えます。

dotnet user-secrets set RedisHostName "<cache-name>.redis.cache.windows.net"

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

RedisConnection クラスは、キャッシュへの接続を管理します。 接続は、Controllers フォルダーにある HomeController.cs の次のステートメントで確立されます。

_redisConnection = await _redisConnectionFactory;

RedisConnection.cs ファイルには、Azure Cache for Redis に接続するための必須の型を含む StackExchange.Redis および Azure.Identity 名前空間がファイルの先頭に含まれています。

using StackExchange.Redis;
using Azure.Identity;

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

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

サンプルのレイアウト ビューを確認する

このサンプルのホーム ページ レイアウトは、_Layout.cshtml ファイルに格納されます。 次のセクションでは、ここで追加したコントローラーを使用してキャッシュをテストします。

  1. Views\Shared\_Layout.cshtml を開きます。

  2. 次の行が <div class="navbar-header"> にあることを確認します。

    <a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="RedisCache">Azure Cache for Redis Test</a>
    

Web ページのウェルカム ページを示すスクリーンショット。

キャッシュのデータを表示する

ホーム ページのナビゲーション バーで [Azure Cache for Redis Test] を選択して、サンプル出力を表示します。

  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>
    

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

  1. コマンド プロンプト ウィンドウで、次のコマンドを使用してアプリをビルドします。

    dotnet build
    
  2. 次のコマンドを使用してアプリを実行します。

    dotnet run
    
  3. Web ブラウザーで、https://localhost:5001 に移動します。

  4. Web ページ ナビゲーション バーの [Azure Cache for Redis Test] を選択して、キャッシュへのアクセスをテストします。

ローカルで完了した単純なテストを示すスクリーンショット。

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

この記事で作成したリソースを引き続き使用する場合は、リソース グループを保持します。

それ以外の場合、リソースに関連する課金が行われないようにするために、リソースの使用が終了したら、作成した Azure リソース グループを削除して構いません。

警告

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

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

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

  2. 削除するリソース グループを選択します。

    多数のリソース グループがある場合は、[任意フィールドのフィルター] に、この記事を完了するために作成したリソース グループの名前を入力します。 検索結果の一覧で、リソース グループを選択します。

    削除対象を選択するためのリソース グループの一覧を示すスクリーンショット。

  3. [リソース グループの削除] を選択します。

  4. [リソース グループの削除] ペインで、リソース グループの名前を入力して確認を行った後、[削除] を選択します。

    削除を確認するためにリソース名を入力する必要があるボックスを示すスクリーンショット。

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