次の方法で共有


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

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

コードにスキップする

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

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

前提条件

キャッシュの作成

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

  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. [詳細] ペインで、以下の情報に基づいて認証方法を確認または選択します。

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

    • 既定では、新しい Basic、Standard、または Premium キャッシュでは、Microsoft Entra 認証が有効になり、アクセス キー認証が無効になります。
    • Basic または Standard キャッシュの場合は、非 TLS ポートを選択できます。
    • Standard および Premium キャッシュの場合は、可用性ゾーンを有効にすることを選択できます。 キャッシュの作成後に可用性ゾーンを無効にすることはできません。
    • Premium キャッシュを利用する場合は、非 TLS ポート、クラスタリング、マネージド ID、データ永続化の設定を構成します。

    重要

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

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

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

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

    [確認と作成] タブでは、Azure によって構成が自動的に検証されます。

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

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

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

Azure Cache for Redis サーバーに接続するには、キャッシュ クライアントにキャッシュのホスト名、ポート、アクセス キーが必要です。 一部のクライアントでは、これらの項目が多少異なる名前で参照されている場合があります。 ホスト名、ポート、キーは Azure portal で取得できます。

  • キャッシュのアクセス キーを取得するには、次の手順を行います。

    1. Azure portal で、キャッシュに移動します。
    2. サービス メニューの [設定] で、[認証] を選択します。
    3. [認証] ペインで、[アクセス キー] タブを選択します。
    4. アクセス キーの値をコピーするには、キー フィールドの [コピー] アイコンを選択します。

    Azure Cache for Redis のインスタンスのアクセス キーを見つけてコピーする方法を示すスクリーンショット。

  • キャッシュのホスト名とポートを取得するには、次の手順を行います。

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

    Azure Cache for Redis のインスタンスのホスト名とポートを見つけてコピーする方法を示すスクリーンショット。

CacheSecrets.config を編集する

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

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

    コードで次の手順を実行します。

    • <cache-name> は実際のキャッシュ ホスト名に置き換えます。

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

      ヒント

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

    <appSettings>
        <add key="CacheConnection" value="<cache-name>.redis.cache.windows.net,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/>
    </appSettings>
    
  3. ファイルを保存します。

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

このセクションでは、Model-View-Controller (MVC) アプリケーションによって、Azure Cache for Redis への接続の簡単なテストが表示されます。

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

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

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

Web.config ファイルを更新する

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

    Visual Studio のソリューション エクスプローラーに表示されている Web.config ファイルを示すスクリーンショット。

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

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

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

StackExchange.Redis のインストール

ソリューションを実行するには StackExchange.Redis パッケージが必要です。

StackExchange.Redis パッケージをインストールするには:

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

  2. [パッケージ マネージャー コンソール] ウィンドウで、次のコマンドを実行します。

    Install-Package StackExchange.Redis
    

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. ソリューション エクスプローラーで、[ビュー] を選択し、Shared フォルダーを右クリックします。 次に _Layout.cshtml ファイルを開きます。

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

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

    Web ページの

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

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

  1. ソリューション エクスプローラーで、[ビュー] を選択し、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 コマンドも実行しました。

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

Azure に発行して実行する

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

アプリを Azure に発行するには、次の手順を行います。

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

    Azure で強調表示されている [発行] メニュー コマンドを示すスクリーンショット。

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

    App Service に発行するために設定するメニュー オプションを示すスクリーンショット。

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

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

    Azure の [App Service] ダイアログ ボックスを示すスクリーンショット。

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

  5. 出力ウィンドウで、発行の状態を確認します。 アプリが発行されると、アプリの URL が出力として表示されます。

    Visual Studio の発行出力ウィンドウを示すスクリーンショット。

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

新しいアプリが発行されたら、Azure portal で新しいアプリ設定を追加します。 この設定により、キャッシュの接続情報が格納されます。

アプリ設定を追加するには、次の手順を行います。

  1. Azure portal で、検索バーにアプリの名前を入力します。

    Azure portal 内でのアプリの検索を示すスクリーンショット。

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

    アプリ設定の追加を示すスクリーンショット。

Azure でアプリを実行する

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

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

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

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

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

警告

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

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

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

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

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

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

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

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

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

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