Azure Cache 用の In-Role Cache について

重要

Microsoft では、すべての新しい開発で Azure Redis Cache を使用することをお勧めします。 Azure Cache オファリングの選択に関する最新のドキュメントとガイダンスについては、「自分に適した Azure Cache オファリング」を参照してください。

In-Role Cache では、Azure ロールでキャッシュ サービスをホストする機能がサポートされています。 このモデルでは、キャッシュはクラウド サービスの一部です。 クラウド サービス内の 1 つのロールが、キャッシュIn-Roleホストするように選択されます。 そのロールの実行中のインスタンスはメモリ リソースを結合し、キャッシュ クラスターを形成します。 このプライベート キャッシュ クラスターは、同じ配置内のロールでのみ使用できます。 In-Role Cache には、併置と専用の 2 つの主なデプロイ トポロジがあります。 併置型ロールは、他の非キャッシュ アプリケーション コードとサービスもホストします。 専用ロールは、キャッシュにのみ使用される worker ロールです。 次のトピックでは、これらのキャッシュ トポロジについて詳しく説明します。

ロールベースの In-Role Cache の詳細なチュートリアルについては、「 Azure In-Role Cache を使用する方法」を参照してください。 ダウンロード可能なサンプルについては、「 Azure In-Role Cache のサンプル」を参照してください。

In-Role キャッシュの概念

このセクションでは、ロールベースの In-Role Cache に関連する 3 つの主要な概念の概要について説明します。

  1. キャッシュ クラスター

  2. 名前付きキャッシュ

  3. キャッシュ クライアント

キャッシュ クラスター

Azure ロールには、1 つ以上のインスタンスがあります。 各インスタンスは、指定されたロールをホストするよう構成された仮想マシンです。 In-Roleキャッシュが有効になっているロールが複数のインスタンスで実行されると、キャッシュ クラスターが形成されます。 キャッシュ クラスターは、クラスター内のすべてのコンピューターのメモリを組み合わせて使用する、分散キャッシュ サービスです。 アプリケーションは、どのコンピューターにアイテムが格納されているかを知らなくても、キャッシュ クラスターとの間でアイテムを追加および取得できます。 高可用性が有効になっている場合、アイテムのバックアップ コピーが別の仮想マシン インスタンスに自動的に格納されます。

注意

各クラウド サービスでサポートされるキャッシュ クラスターは 1 つのみです。 各ロールに異なるストレージ アカウントを指定して、クラウド サービスで複数のキャッシュ クラスターを設定することはできます。 ただし、この構成はサポートされません。

Azure ロールで In-Role Cache を有効にする場合は、キャッシュに使用できるメモリの量を指定します。 併置型シナリオでは、ロールをホストする仮想マシンで使用できるメモリの割合を選択します。 専用シナリオでは、仮想マシン上の空きメモリがすべてキャッシュに使用されます。 ただし、オペレーティング システムのメモリ要件により、空きメモリは常に仮想マシン上の合計物理メモリよりも小さくなります。

したがって、キャッシュ メモリの合計量は、キャッシュ用に予約されたロール メモリにロールの数を掛けたものによって異なります。 そのロールの実行中のインスタンスの数を増減することで、キャッシュ メモリの合計を効果的にスケールアップまたはスケールダウンできます。

警告

In-Role Cache をホストするロールの実行中のインスタンスをスケール ダウンする場合は、インスタンス数を一度に 3 つ以下に減らします。 その変更が完了した後、追加の最大 3 つの実行中インスタンスを削除できます。実行中インスタンスが必要な数になるまで、手順を繰り返します。 3 つを超える数のインスタンスを同時に縮小すると、キャッシュ クラスターが不安定になります。

各キャッシュ クラスターは、Azure Storage 内のクラスターのランタイム状態に関する共有情報を保持します。 開発中は、Azure ストレージ エミュレーターを使用できます。 デプロイされたロールでは、有効な Azure ストレージ アカウントを指定する必要があります。 Visual Studioでは、ロールのプロパティの [キャッシュ] タブで適切なストレージ アカウントを指定できます。

名前付きキャッシュ

どのキャッシュ クラスターにも default という名前のキャッシュが少なくとも 1 つあります。 ロールベースのIn-Role キャッシュでは、 名前付きキャッシュを追加することもできます。 キャッシュごとにさまざまな設定を変更できます。 次のスクリーンショットは、Visual Studio ロール設定の [キャッシュ] タブの [名前付きキャッシュ 設定] セクションを示しています。

Caching Properties for Named Caches

Visual Studioで、[名前付きキャッシュの追加] ボタンをクリックして、名前付きキャッシュを追加します。 前の例では、NamedCache1 および NamedCache2 という 2 つのキャッシュが追加されています。 各キャッシュの設定はそれぞれ異なります。 表の特定のフィールドを選択して変更することで、設定を変更します。

名前付きキャッシュを使用することで、アプリケーションを柔軟に設計できます。 名前付きキャッシュには、それぞれ独自のプロパティがあります。 たとえば、あるキャッシュでは [高可用性] を有効にして高可用性を利用することができます。 別のキャッシュにこの設定が必要だとは限りません。高可用性を使用する場合、各キャッシュ アイテムには 2 倍のメモリが必要です。 リソースを効率的に使用するには、必要なキャッシュにのみ高可用性を使用するようにします。 複数のキャッシュに異なるプロパティを設定してアプリケーションの要件を満たす同様のシナリオは他にもあります。

キャッシュ クライアント

キャッシュ クライアントは、キャッシュ クラスターとの間でアイテムを格納および取得する任意のアプリケーション コードです。 In-Roleロールのキャッシュでは、キャッシュ クライアントは同じキャッシュ ロールの一部であるか、デプロイ内の他のロールに組み込まれている必要があります。 キャッシュ クライアントを構成するには、アプリケーション構成ファイルや Web 構成ファイルを使用します。 詳細については、「方法: Azure In-Role Cache を使用するVisual Studioを準備する」を参照してください。 次の例は、構成ファイル内の dataCacheClient 要素を示しています。

<dataCacheClients>
  <dataCacheClient name="default">
    <autoDiscover isEnabled="true" identifier="CachingRole1" />
    <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
  </dataCacheClient>
</dataCacheClients>

前の例では、 autoDiscover 要素に 識別子 属性が設定 CachingRole1されています。 この識別子は、In-Roleキャッシュが CachingRole1 有効になっていることを指定します。 これにはキャッシュ サーバーの場所が指定されています。 キャッシュ クライアントは、キャッシュ操作で自動的に使用 CachingRole1 されます。

キャッシュ クライアントを一度構成すると、どのキャッシュにも名前でアクセスできます。 次の例では、NamedCache1 キャッシュにアクセスしてアイテムを追加しています。

DataCache cache = new DataCache("NamedCache1", "default");
cache.Put("testkey", "testobject");

DataCache コンストラクターは、キャッシュ名と dataCacheClient セクション名の 2 つのパラメーターを受け取ります。 キャッシュ名の詳細については、名前付きキャッシュに関する前のセクションを参照してください。

このセクションの内容

参照

概念

Cache