Azure Managed Cache Service の有効期限と削除

重要

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

Microsoft Azure キャッシュは、キャッシュされたオブジェクトをメモリに永続的に保持しません。 Remove メソッドを使用してキャッシュから明示的に削除されるだけでなく、キャッシュされたオブジェクトの有効期限が切れたり、キャッシュによって削除されたりする可能性もあります。

有効期限

キャッシュの有効期限を使用して、キャッシュ済みオブジェクトをキャッシュから自動的に削除することができます。 Put メソッドまたは Add メソッドを使用する場合、特定のキャッシュ済みオブジェクトについて、キャッシュに保持する時間を示すオプションのオブジェクトのタイムアウト値を設定することができます。 オブジェクトのキャッシュ時にオブジェクトのタイムアウト値を指定しない場合、キャッシュ済みオブジェクトには既定の有効期限が使用されます。 Managed Cache Serviceの既定の時間は 10 分です。

[有効期限ポリシー] は [時間 (分)] 設定と共に機能し、キャッシュ済み項目が期限切れになる時間が決まります。これらの動作は、管理ポータルの Cache に関する [構成] タブで名前付きキャッシュ レベルで構成されます。

Expiry Policy for Windows Azure Cache Service

有効期限ポリシーには、[絶対][スライド式][無期限] の 3 種類があります。

有効期限ポリシー 説明

Never (決してしない)

有効期限は無効です。 項目は削除されるまでキャッシュに残っています。 [無期限] を指定した場合、[時間 (分)] を 0 に設定する必要があります。

Absolute

[時間 (分)] で指定した有効期限の間隔は、項目がキャッシュに追加されたときに開始されます。 [時間 (分)] で指定した間隔の経過後に、項目の有効期限が切れます。

スライディング

[時間 (分)] で指定した有効期限の間隔は、キャッシュ内の項目にアクセスされるたびにリセットされます。 項目への最後のアクセスの後、[時間 (分)] で指定した間隔が経過するまでは、項目の有効期限は切れません。 これは頻繁に使用される項目がキャッシュに格納されている時間を延ばします。

既定の有効期限ポリシーは [絶対] であり、[時間 (分)] の既定の設定は 10 分です。 有効期限ポリシーは名前付きキャッシュ内の各項目に対して固定されていますが、タイムアウト パラメーターを受け取る Add オーバーロードと Put オーバーロードを使用して、アイテムごとに Time (min) をカスタマイズできます。

注意

ローカル キャッシュと組み合わせて使用するときのスライド式有効期限の動作に注意することが重要です。 ローカル キャッシュから項目を読み取る場合、キャッシュのオブジェクトにはアクセスしません。 つまり、ローカルで読み込まれている場合でも、サーバーで項目の有効期限が切れることがあります。

コンカレンシー性の目的でキャッシュ済みオブジェクトがロックされている場合、有効期限を過ぎてもキャッシュから削除されません。 有効期限を過ぎている場合、ロックが解除されると直ちにキャッシュから削除されます。

期限切れオブジェクトのロックを解除したとき、オブジェクトがすぐに削除されないように、ロック解除メソッドでは、キャッシュされたオブジェクトの有効期限を延長できます。

管理ポータルのキャッシュ用の [監視] タブで、キャッシュの正常性とパフォーマンスを確認できます (削除、期限切れのメトリックなど)。 詳細については、「 監視」タブを使用したキャッシュ・サービスのモニターを参照してください

ローカル キャッシュの無効化

ローカル キャッシュの無効化には、タイムアウトベースの無効化と通知ベースの無効化の 2 種類があります。

ヒント

オブジェクトをローカル キャッシュに保存すると、別クライアントがそのオブジェクトを更新するかどうかにかかわらず、そのオブジェクトが無効になるまで、アプリケーションはオブジェクトを使用できます。 そのため、まれにしか変更されないデータに関してはローカル キャッシュを有効にするのが最良の方法です。

タイムアウト基準の無効化

オブジェクトがローカル キャッシュにダウンロードされると、キャッシュ クライアント構成設定に指定されているオブジェクトのタイムアウト値に到達するまでそこに残ります。 このタイムアウト値に達すると、オブジェクトは無効になるため、次に要求されたときにキャッシュのオブジェクトを更新することができます。

通知基準の無効化

キャッシュ クライアントでローカル キャッシュが有効になっている場合、キャッシュ通知を利用し、ローカルでキャッシュされたオブジェクトを自動的に無効にすることもできます。 これらのオブジェクトの有効期間を "必要に応じて" 短縮することで、アプリケーションが古いデータを使用している可能性を減らすことができます。

注意

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

キャッシュ通知を使用する場合、アプリケーションは一定の間隔でキャッシュを確認し、新しい通知を使用できるかどうかを確認します。 この間隔はポーリング間隔と呼ばれていますが、既定で 300 秒ごとに設定されています。 ポーリング間隔はアプリケーション構成設定に秒単位で指定されます。 通知基準の無効化を利用する場合でも、ローカル キャッシュでは依然としてタイムアウトが項目に適用されることに注意してください。 このように、通知基準の無効化はタイムアウト基準の無効化を補足します。

詳細と例については、「Azure Managed Cache Service のローカル キャッシュ」を参照してください。

削除

キャッシュに使用できるメモリ容量を維持するために、LRU (最も長く使われていない) という種類の削除がサポートされています。 メモリ消費量がキャッシュ オファリングのサイズに近づくと、オブジェクトが期限切れかどうかにかかわらず、メモリ負荷が軽減されるまでメモリからオブジェクトが削除されます。

警告

削除を無効にしても、調整のリスクがあります。 この状態では、メモリはしきい値を超えていますが、メモリ不足を解決する能力はありません。 解消されるまでは、この状態でクライアントがキャッシュに項目を追加しようとすると、例外が発生します。

管理ポータルのキャッシュ用の [監視] タブで、キャッシュの正常性とパフォーマンスを確認できます (削除、期限切れのメトリックなど)。 詳細については、「 監視」タブを使用したキャッシュ・サービスのモニターを参照してください

削除には、 有効 と無効の 2 つの設定 があります。 削除は、管理ポータルの Cache に関する [構成] タブで名前付きキャッシュ レベルで構成されます。既定の設定は [有効] です。

Eviction Policy for Windows Azure Cache Service

コードを使用して有効期限と削除の設定を指定する

次のメソッドを利用すると、キャッシュにある既定の設定をオーバーライドできます。

  • Add メソッドと Put メソッドは、キャッシュに追加するオブジェクトに対してのみ有効期限のタイムアウト値を指定できるオーバーロードを提供します。

  • PutAndUnlock メソッドと Unlock メソッドは、オブジェクトのロック解除後にオブジェクトの有効期限を延長できるオーバーロードを提供します。

  • ResetObjectTimeout メソッドを使用すると、オブジェクトの有効期間を明示的に拡張し、キャッシュの有効期限設定をオーバーライドできます。

注意

キャッシュ サービスのシャットダウンやエラーが発生した場合、有効期限または削除の設定にかかわらず、キャッシュ データは保存されません。 データがキャッシュにない場合、アプリケーションコードはデータ ソースからキャッシュを再度読み込む必要があります。 これはしばしばキャッシュ アサイド プログラミング パターンと呼ばれます。

参照

その他の参照情報

Azure Managed Cache Service の機能