クイックスタート: ASP.NET Core Web アプリで Azure Cache for Redis を使用する
このクイックスタートでは、Azure Cache for Redis を、Azure Cache for Redis に接続してキャッシュからデータを格納および取得する ASP.NET Core Web アプリケーションに組み込みます。
.NET Core にはキャッシュ プロバイダーもあります。 既存のコードの変更を最小限にして Redis の使用をすぐに開始するには、次を参照してください。
GitHub のコードにスキップする
https://github.com/Azure-Samples/azure-cache-redis-samples GitHub リポジトリをクローンし、quickstart/aspnet-core
ディレクトリに移動して、この先の手順用の完成したソース コードを表示します。
quickstart/aspnet-core
ディレクトリは、Azure Developer CLI (azd
) テンプレートとしても構成されます。 オープンソースの azd
ツールを使用して、ローカル環境から Azure へのプロビジョニングとデプロイを効率化します。 必要に応じて、以下のように azd up
コマンドを実行して Azure Cache for Redis インスタンスを自動的にプロビジョニングし、それに接続するようにローカル サンプル アプリを構成します。
azd up
eShop サンプルを調べる
次の手順として、Redis キャッシュ プロバイダーを使用する ASP.NET Core eShop という、ASP.NET Core キャッシュ プロバイダーを実演する現実世界シナリオの eShop アプリケーションを確認できます。
含まれている機能:
- Redis 分散キャッシュ
- Redis セッション状態プロバイダー
デプロイの手順はREADME.md にあります。
前提条件
- Azure サブスクリプション - 無料アカウントを作成する
- .NET Core SDK
キャッシュの作成
キャッシュを作成するには、Azure portal にサインインします。 ポータルのメニューで、[リソースの作成] を選びます。
[作業の開始] ペインの検索バーに「Azure Cache for Redis」と入力します。 検索結果で Azure Cache for Redis を見つけて、[作成] を選びます。
[新しい 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 の概要に関するページを参照してください。 [ネットワーク] タブを選ぶか、[次へ: ネットワーク] を選びます。
[ネットワーク] タブで、キャッシュに使う接続方法を選びます。
[詳細] タブを選択するか、[次へ: 詳細] を選択します。
[詳細設定] タブで、[Microsoft Entra 認証] チェックボックスをオンにして、Microsoft Entra 認証を有効にします。
重要
最適なセキュリティのため、可能であれば、キャッシュに対する要求を認可するのに Microsoft Entra ID とマネージド ID を使うことをお勧めします。 Microsoft Entra ID とマネージド ID を使う認可は、共有アクセス キーの認可より、セキュリティと使いやすさの点で優れています。 キャッシュでのマネージド ID の使用について詳しくは、キャッシュ認証への Microsoft Entra ID の使用に関する記事をご覧ください。
(省略可能) [タグ] タブを選ぶか、[次へ: タグ] を選びます。
(省略可能) キャッシュ リソースを分類する場合は、[タグ] タブでタグの名前と値を入力します。
[確認および作成] ボタンを選択します。
[確認と作成] タブでは、Azure によって構成が自動的に検証されます。
緑色の検証に成功のメッセージが表示された後、 [作成] を選択します。
新しいキャッシュのデプロイは数分で完了します。 デプロイの進行状況は、Azure Cache for Redis の [概要] ペインで監視できます。 [状態] に [実行中] と表示されたら、キャッシュを使用できます。
キャッシュで Microsoft Entra ID の認証を有効にする
キャッシュがある場合は、Microsoft Entra 認証が有効になっているかどうかを確認します。 そうでない場合は、有効にします。 アプリには Microsoft Entra ID を使用することをお勧めします。
Azure portal で、Microsoft Entra トークンベースの認証を使用する対象の Azure Cache for Redis インスタンスを選択します。
リソース メニューで [認証] を選択します。
作業ペインで、[Microsoft Entra 認証を有効にする] がオンになっているかどうかを確認します。 その場合は、次に進みます。
[Enable Microsoft Entra 認証] を選択し、有効なユーザー名を入力します。 [保存] を選択した場合は、既定で入力したユーザーに [データ所有者アクセス ポリシー] が自動的に割り当てられます。 マネージド ID またはサービス プリンシパルを入力して、キャッシュ インスタンスに接続することもできます。
構成を更新するかどうか確認するポップアップ ダイアログ ボックスが表示されて、数分かかることが通知されます。 [はい] を選択します。
重要
有効化の操作が完了すると、キャッシュ インスタンス内のノードが再起動して新しい構成が読み込まれます。 そのため、この操作はメンテナンス期間中またはピーク営業時間外に実行することをお勧めします。 この操作には最大 30 分かかることがあります。
Azure CLI で Microsoft Entra ID を使用する方法については、ID のリファレンス ページを参照してください。
Redis アクセス ポリシーを追加する
Azure Cache for Redis にアクセスする ID にデータ アクセス ポリシーを割り当てる必要があります。 この例では、Azure CLI または Visual Studio へのログインに使用するのと同じ Microsoft Entra ID アカウントにデータ アクセス ポリシーを割り当てます。
キャッシュの [設定] リソース メニューを選択し、[データ アクセスの構成] を選択します。
[データ アクセスの構成] ページで、上部のナビゲーションから [追加] > [新しい Redis ユーザー] を選択します。
[新しい Redis ユーザー] ページで、[データ共同作成者] ポリシーを選択し、[次へ: Redis ユーザー] を選択します。
[+ メンバーの選択] を選択してポップアップ メニューを開きます。 自分のユーザー アカウントを検索し、結果からそれを選択します。
[確認と割り当て] を選択して、選択したユーザーにポリシーを割り当てます。
ホスト名のローカル シークレットを追加する
コマンド ウィンドウで、角かっこを含めプレースホルダーを自分のキャッシュ名とプライマリ アクセス キーに置き換えた上で次のコマンドを実行して、RedisHostName という名前の新しいシークレットを保存します。
dotnet user-secrets set RedisHostName "<cache-name>.redis.cache.windows.net"
Azure Managed Redis (プレビュー) インスタンスを使用する場合は、次のように RedisHostName という名前の新しいシークレットを格納します:
dotnet user-secrets set RedisHostName "<cache-name>.<region>.redis.azure.net"
## Connect to the cache with RedisConnection
The `RedisConnection` class manages the connection to your cache. The connection is made in this statement in `HomeController.cs` in the *Controllers* folder:
```csharp
_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.Redis と、GitHub リポジトリのコードを参照してください。
サンプルのレイアウト ビュー
このサンプルのホーム ページ レイアウトは、_Layout.cshtml ファイルに格納されます。 このページから [Azure Cache for Redis テスト] をクリックして実際のキャッシュ テストを開始します。
Views\Shared\_Layout.cshtml を開きます。
<div class="navbar-header">
で確認できます。<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="RedisCache">Azure Cache for Redis Test</a>
キャッシュのデータの表示
サンプル出力を確認するには、ホーム ページから [Azure Cache for Redis テスト] を選択します。
ソリューション エクスプローラーで、[Views] フォルダーを展開し、[Home] フォルダーを右クリックします。
このコードは 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>
アプリをローカルで実行する
コマンド ウィンドウで次のコマンドを実行し、アプリをビルドします。
dotnet build
次のコマンドを使用してアプリを実行します。
dotnet run
Web ブラウザーで
https://localhost:5001
を参照します。Web ページにあるナビゲーション バーの [Azure Cache for Redis Test](Azure Cache for Redis テスト) を選択して、キャッシュへのアクセスをテストします。
リソースをクリーンアップする
この記事で作成したリソースを引き続き使用する場合は、リソース グループを保持します。
それ以外の場合、リソースを使い終わったら、課金されないように、作成した Azure リソース グループを削除できます。
重要
リソース グループを削除すると、元に戻すことができません。 リソース グループを削除すると、そのリソース グループ内のすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 リソースを既存のリソース グループ内に作成し、そのリソース グループ内に保持したいリソースが含まれている場合は、リソース グループを削除するのではなく、各リソースを個別に削除できます。
リソース グループを削除するには
Azure portal にサインインし、 [リソース グループ] を選択します。
削除するリソース グループを選択します。
多数のリソース グループがある場合は、[任意のフィールドのフィルター...] ボックスを使用し、この記事用に作成したリソース グループの名前を入力します。 結果リストでリソース グループを選びます。
[リソース グループの削除] を選択します。
リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにリソース グループの名前を入力し、[削除] を選択します。
しばらくすると、リソース グループとそのリソースのすべてが削除されます。