クイックスタート: 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 をクローンします。
前提条件
- Azure サブスクリプション - 無料アカウントを作成する
- ASP.NET と Web 開発ワークロードおよび Azure の開発ワークロードを含む、Visual Studio 2019。
キャッシュの作成
次に、アプリ用のキャッシュを作成します。
キャッシュを作成するには、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 の概要に関するページを参照してください。 [ネットワーク] タブを選ぶか、[次へ: ネットワーク] を選びます。
[ネットワーク] タブで、キャッシュに使う接続方法を選びます。
[詳細] タブを選ぶか、[次へ: 詳細] を選びます。
[詳細] ペインで、以下の情報に基づいて認証方法を確認または選択します。
- 既定では、新しい Basic、Standard、または Premium キャッシュでは、Microsoft Entra 認証が有効になり、アクセス キー認証が無効になります。
- Basic または Standard キャッシュの場合は、非 TLS ポートを選択できます。
- Standard および Premium キャッシュの場合は、可用性ゾーンを有効にすることを選択できます。 キャッシュの作成後に可用性ゾーンを無効にすることはできません。
- Premium キャッシュを利用する場合は、非 TLS ポート、クラスタリング、マネージド ID、データ永続化の設定を構成します。
重要
最適なセキュリティのため、可能であれば、キャッシュに対する要求を認可するのに 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 のリファレンス ページを参照してください。
CacheSecrets.config ファイルを編集するには
コンピューター上に CacheSecrets.config というファイルを作成します。そのファイルをサンプル アプリケーションのソース コードでチェックインされない場所に配置します。 このクイック スタートでは、CacheSecrets.config ファイルを C:\AppSecrets\CacheSecrets.config に配置します。
Web.config ファイルを編集します。 次の内容を追加します。
<appSettings> <add key="RedisHostName" value="<cache-hostname>:<port-number>"/> </appSettings>
Azure portal の [概要] ブレードに表示される
<cache-hostname>
をキャッシュ ホスト名に置き換える<port-number>
をキャッシュ ホストポート番号に置き換えます。ファイルを保存します。
MVC アプリケーションを更新する
ここでは、Azure Cache for Redis に対する簡単なテストをビューに表示する MVC アプリケーションを扱います。 "RedisHostName" 構成が Azure Managed Redis インスタンスを指しているときに、MVC アプリケーションは Azure Managed Redis (プレビュー) インスタンスに接続できます。
StackExchange.Redis のインストール
ソリューションを実行するには StackExchange.Redis
パッケージが必要です。 インストールするには、次の手順を使用します。
Visual Studio 用の StackExchange.Redis NuGet パッケージを使うようにアプリを構成するには、[ツール] > [NuGet パッケージ マネージャー] > [パッケージ マネージャー コンソール] の順に選びます。
[
Package Manager Console
] ウィンドウで、次のコマンドを実行します。Install-Package Microsoft.Azure.StackExchangeRedis
NuGet パッケージがダウンロードされ、クライアント アプリケーションが
Microsoft.Azure.StackExchangeRedis
クライアントを使用して Azure Cache for Redis にアクセスするために必要なアセンブリ参照が追加されます。
RedisConnection を使用してキャッシュに接続する
キャッシュへの接続は RedisConnection
クラスによって管理されます。 まず、ContosoTeamStats/Controllers/HomeController.cs
の次のステートメントで接続が確立されます。
private static Task<RedisConnection> _redisConnectionFactory = RedisConnection.InitializeAsync(redisHostName: ConfigurationManager.AppSettings["RedisHostName"].ToString());
RedisConnection.cs
で、StackExchange.Redis
名前空間がコードに追加されていることがわかります。 これは RedisConnection
クラスに必要です。
using StackExchange.Redis;
RedisConnection
のコードは、StackExchange.Redis
からの ConnectionMultiplexer
インスタンスを管理することによって、キャッシュへの正常な接続が常に存在することを保証します。 接続が失われ、自動的に再接続できない場合、RedisConnection
クラスによって再び接続が作成されます。
次のコード行では、Microsoft Entra ID を使用して、パスワードなしで Azure Cache for Redis または Azure Managed Redis (プレビュー) に接続します。
var configurationOptions = await ConfigurationOptions.Parse($"{_redisHostName}").ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
詳細については、StackExchange.Redis と、GitHub リポジトリのコードを参照してください。
サンプルのレイアウト ビュー
このサンプルのホーム ページ レイアウトは、_Layout.cshtml ファイルに格納されます。 このページから [Azure Cache for Redis テスト] をクリックして実際のキャッシュ テストを開始します。
ソリューション エクスプローラーで、[ビュー]>[共有] フォルダーを順に展開します。 次に _Layout.cshtml ファイルを開きます。
<div class="navbar-header">
に次の行があります。@Html.ActionLink("Azure Cache for Redis Test", "RedisCache", "Home", new { area = "" }, new { @class = "navbar-brand" })
キャッシュのデータの表示
サンプル出力を確認するには、ホーム ページから [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>
アプリをローカルで実行する
既定では、プロジェクトはテストとデバッグのためにアプリを IIS Express にローカルにホストするように構成されます。
アプリをローカルで実行するには
Visual Studio で [デバッグ]>[デバッグの開始] の順に選択してアプリをビルドし、テストとデバッグのためにアプリをローカルで起動します。
ブラウザーで、ナビゲーション バーの [Azure Cache for Redis Test] を選択します。
次の例では、以前に
Message
キーにキャッシュされた値がありました。この値は、ポータルの Azure Cache for Redis コンソールを使用して設定されています。 アプリは、そのキャッシュ値を更新しました。 また、アプリはPING
およびCLIENT LIST
コマンドも実行しました。
Azure に発行して実行する
アプリのローカル テストが正常に終了したら、アプリを Azure にデプロイして、クラウドで実行します。
アプリを Azure に発行するには
Visual Studio で、ソリューション エクスプローラーのプロジェクト ノードを右クリックします。 [発行] を選択します。
[Microsoft Azure App Service]、[新規作成]、[発行] の順に選択します。
[App Service の作成] ダイアログ ボックスで、次のように変更します。
設定 推奨値 説明 アプリ名 既定値を使用します。 アプリ名は、Azure へのデプロイ時にアプリのホスト名になります。 必要に応じて、名前を一意にするためにタイムスタンプのサフィックスが追加される場合があります。 [サブスクリプション]: 。 Azure サブスクリプションを選択します。 関連するホスティング料金は、このサブスクリプションに請求されます。 複数の Azure サブスクリプションがある場合は、適切なサブスクリプションを選択したことを確認します。 リソース グループ キャッシュを作成したものと同じリソース グループを使います (TestResourceGroup など)。 リソース グループは、すべてのリソースをグループとして管理するときに便利です。 後でアプリを削除する必要があるときは、グループを削除するだけで済みます。 App Service プラン [新規] を選択し、TestingPlan という名前で新しい App Service プランを作成します。
キャッシュを作成するときに使ったものと同じ [場所] を使います。
サイズでは [Free] を選びます。App Service プランでは、Web アプリを実行するための一連のコンピューティング リソースを定義します。 App Service のホスティング設定を構成したら、[作成] を選択します。
Visual Studio の [出力] ウィンドウを監視して、発行の状態を確認します。 アプリが発行されると、アプリの URL がログに記録されます。
キャッシュ用のアプリの設定を追加する
新しいアプリが発行されたら、新しいアプリの設定を追加します。 この設定は、キャッシュの接続情報を格納するために使われます。
アプリの設定を追加するには
Azure portal の上部にある検索バーにアプリ名を入力し、作成した新しいアプリを検索します。
キャッシュへの接続に使用する CacheConnection という名前の新しいアプリ設定をアプリに追加します。 web.config ファイルで
RedisHostName
用に構成したものと同じ値を使います。
Azure でアプリを実行する
ブラウザーで、アプリの URL にアクセスします。 URL は、Visual Studio 出力ウィンドウの発行操作の結果に表示されます。 Azure portal の作成したアプリの [概要] ページにも表示されます。
ローカル バージョンで行ったように、ナビゲーション バーの [Azure Cache for Redis テスト] を選択してキャッシュ アクセスをテストします。
リソースをクリーンアップする
この記事で作成したリソースを引き続き使用する場合は、リソース グループを保持します。
それ以外の場合、リソースを使い終わったら、課金されないように、作成した Azure リソース グループを削除できます。
重要
リソース グループを削除すると、元に戻すことができません。 リソース グループを削除すると、そのリソース グループ内のすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 リソースを既存のリソース グループ内に作成し、そのリソース グループ内に保持したいリソースが含まれている場合は、リソース グループを削除するのではなく、各リソースを個別に削除できます。
リソース グループを削除するには
Azure portal にサインインし、 [リソース グループ] を選択します。
削除するリソース グループを選択します。
多数のリソース グループがある場合は、[任意のフィールドのフィルター...] ボックスを使用し、この記事用に作成したリソース グループの名前を入力します。 結果リストでリソース グループを選びます。
[リソース グループの削除] を選択します。
リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにリソース グループの名前を入力し、[削除] を選択します。
しばらくすると、リソース グループとそのリソースのすべてが削除されます。