次の方法で共有


Azure Managed Cache Service の通知

重要

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

Microsoft Azure キャッシュには、名前付きキャッシュに対してさまざまなキャッシュ操作が発生したときにアプリケーションが非同期通知を受信できるようにするキャッシュ通知が用意されています。 キャッシュ通知は、ローカルにキャッシュされた自動無効化も行います。

非同期キャッシュの通知を受信するには、キャッシュ通知のコールバックをアプリケーションに追加します。 コールバックを追加した場合、キャッシュ通知をトリガーするキャッシュ操作の種類と、指定した操作が発生した場合にアプリケーションで呼び出されるメソッドを定義します。 名前付きキャッシュを選択して、キャッシュ通知を有効にする必要があります。

注意

通知はスタンダードとプレミアムのキャッシュ サービスで利用できますが、基本キャッシュ サービスでは利用できません。 詳細については、「Azure Managed Cache Service のキャッシュ オファリング」を参照してください。

キャッシュ通知のトリガー

これらのキャッシュ操作は、 DataCacheOperations クラスのメンバーによって定義されます。

地域の操作

地域に関する以下のキャッシュ操作が発生した場合、アプリケーションで通知を受信することができます。

  • CreateRegion: リージョンがキャッシュに作成されたとき。

  • ClearRegion: キャッシュでリージョンがクリアされたとき。

  • RemoveRegion: キャッシュからリージョンが削除されたとき。

項目操作

キャッシュされたオブジェクト (「キャッシュ内の項目」とも呼ばれています) に対して以下のキャッシュ操作が発生した場合、アプリケーションでキャッシュ通知を受信することがあります。

  • AddItem: 項目がキャッシュに追加されたとき。

  • ReplaceItem: キャッシュ内で項目が置き換えられる場合。

  • RemoveItem: キャッシュから項目が削除されたとき。

Note

これらの項目操作は単独で、地域内で発生したかどうかには依存していません。 コールバックの通知範囲を特定の地域に制限することを選択できます。 これについては、このマニュアルの「通知の範囲」で説明します。

通知の範囲

アプリケーションのアクティビティとニーズに応じて、キャッシュ全体のすべてのオブジェクトと地域に注意を払う必要がない場合があります。 通知の範囲をキャッシュレベルから、地域レベルや項目レベルに狭めることができます。 コールバックの追加時に選択する通知の範囲によって、どのキャッシュ通知を受信するかが大きく影響を受けます。

キャッシュ レベルでは、キャッシュ内のすべてのオブジェクトおよび地域からのすべてのキャッシュ操作の通知を、アプリケーションで受信することができます。 地域レベルでは、キャッシュ内の単一の地域やオブジェクトからのキャッシュ操作に関する通知だけを、アプリケーションで受信します。 項目レベルでは、単一のオブジェクトに関連するキャッシュ操作に関する通知だけを、アプリケーションで受信します。

通知範囲を指定するには上記の 3 種類の方法のいずれかを選択して、キャッシュ通知のコールバックを追加します。

  • AddCacheLevelCallback: すべてのリージョンと項目で発生しているリージョンベースおよび項目ベースのキャッシュ操作の通知を受け取る場合。

  • AddRegionLevelCallback: 1 つの特定のリージョンで発生しているリージョンおよび項目ベースのキャッシュ操作の通知を受け取る場合。

  • AddItemLevelCallback: 1 つの特定の項目で発生している項目ベースのキャッシュ操作の通知を受け取る場合。

Notification Order

キャッシュ クライアントが受信する通知の順番は、単一の地域というコンテキスト内で保証されます。 たとえば、RegionA という名前の地域を作成したとします。 キャッシュ地域内に配置されるすべてのデータは同じ地域に制限されるため、RegionA に関するすべてのキャッシュ操作 (地域レベルの通知範囲) は、相互に相対的な順番でキャッシュ クライアントに着信します。 他のキャッシュ ホストで発生した地域ベースおよび項目ベースの操作が、RegionA で発生した操作に相対する順番で着信するとは限りません。

パフォーマンスに関しては、同じ地域に保存されない複数の地域またはオブジェクトに関する通知の順番は、保証できません。

項目イベントのバージョン情報は、 DataCacheItemVersion オブジェクトの形式で、パラメーターを使用してキャッシュ通知によって呼び出されたメソッドに version 渡されます。 この DataCacheItemVersion オブジェクトは、項目イベントをトリガーしたオブジェクトのバージョンに対応します。 CompareTo メソッドを使用すると、バージョンを比較して、どのキャッシュ操作が最初に行われるかを判断できます。

Note

バージョンの比較は、同じキーを使って指定された同じ項目のバージョンを比較した場合にのみ意味を持ちます。 異なるキーのバージョンを比較して順序を推測することはできません。 CompareTo メソッドは結果を返す場合がありますが、結果は同じキーのバージョンでのみ有効です。

ポーリング間隔

キャッシュ通知を使用すると、アプリケーションは定期的にキャッシュを調べて、新しい通知があるかどうかを確認します。 この間隔はポーリング間隔と呼ばれていますが、既定で 300 秒ごとに設定されています。 頻繁に書き込みを行うアプリケーションでこの値を小さく設定する際に、キャッシュに対する変更が頻繁に発生しない場合、大きな間隔の方が望ましいことがあります。 既定値 (300 秒) はほとんどの一般的なキャッシュにとって適切な値です。

ポーリング間隔はアプリケーション構成設定に秒単位で指定されます。 特定の間隔を指定するには、適切な構成ファイル内の pollInterval 要素の clientNotifications 属性を使用できます。 DataCacheFactoryConfiguration オブジェクトのプロパティを使用して、NotificationPropertiesプログラムで特定のポーリング間隔を指定することもできます。

When Notifications Are Lost

Microsoft Azureキャッシュは、メモリ内の一定量のキャッシュ操作のみを保持できます。 キャッシュ クライアントが通知を受け取る前に、通知キューの通知が切り捨てられる可能性があります。 キャッシュ障害のためにデータが失われたときも、キャッシュ クライアントが通知を受け取れない可能性があります。 これらのケースでは、障害通知を使うことで、キャッシュ クライアントは一部のキャッシュ通知が不足していることを検出できます。 アプリケーションでは、 AddFailureNotificationCallback メソッドを使用して、エラー通知を受信するコールバックを追加できます。 詳細については、「方法: エラー通知コールバックを追加する」を参照してください。

キャッシュが失われるとき

通知が失われる場合とキャッシュが失われる場合では重要な違いがあります。 アプリケーションで 1 つまたは複数の通知を喪失した場合、障害通知を利用することで、その喪失を認識することができます。 キャッシュ全体が削除された場合、キャッシュ エンドポイントと接続できなくなるため、次にキャッシュを使用しようとしたときに、キャッシュ クライアントが例外をスローします。 名前付きキャッシュの作成または削除などのキャッシュ イベントは、通知では報告されません。 通知を登録した後で名前付きキャッシュが削除された場合は、単に通知の受信を停止します。 名前付きキャッシュが存在していないことと、操作が名前付きキャッシュで実行されていないことを区別することはできません。

Note

キャッシュ通知では、リージョンおよびその中のキャッシュ アイテムに対するデータ関連の変更だけが報告されます。キャッシュ自体のイベントは報告されません。

キャッシュ通知の有効化

通知は、管理ポータルの [キャッシュ] の [構成] タブにおいて、名前付きキャッシュ レベルで構成されます。 通知の既定の設定は [無効] です。

Cache Notifications for Windows Azure Cache Servic

キャッシュ通知を受信するためにコールバックを追加するには、アプリケーション構成設定は必要ありません。 アプリケーション構成設定を使って、特定のポーリング間隔を指定できます。 既定のポーリング間隔は 300 秒です。 別の期間が必要な場合は、XML ベースのアプリケーション構成ファイル内の要素を使用clientNotificationするか、DataCacheFactoryConfiguration オブジェクトのプロパティを使用してプログラムでNotificationsProperties目的の間隔を指定します。

キャッシュ通知の使用

キャッシュ通知が有効になった後、キャッシュ通知の使用に関連する 3 つのタスクがあります。キャッシュ通知コールバックの追加、エラー通知コールバックの追加、キャッシュ通知コールバックの削除です。 これらの各タスクの手順については、この後説明します。

参照

その他の参照情報

Azure Managed Cache Service の機能