有効期限と削除
目次を折りたたむ
目次を展開する

Azure In-Role Cache の有効期限と削除

更新日: 2015年8月

Important重要
新しいすべての開発で Azure Redis Cache を使用することをお勧めします。Azure Cache サービスに関する現在のドキュメントとガイダンスについては、「Redis Cache のサービス内容と適切なサイズの選択」をご覧ください。

Microsoft Azure Cache は、キャッシュ済みオブジェクトを永続的にメモリに保持しません。Remove メソッドを使用してキャッシュから明示的に削除される場合に加え、キャッシュされたオブジェクトは有効期限が切れることもあれば、キャッシュ クラスターによって削除されることもあります。

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

ロール基準の キャッシュ を使用するとき、有効期限に 3 つの選択肢が与えられます。

 

有効期限の種類 説明

なし

有効期限は無効です。削除されるか、キャッシュ クラスターが再起動するまで、項目はキャッシュに残ります。

絶対

作成されたときから始まる期間でアイテムの有効期限が終了します。

スライディング

最後にアクセスされたときから始まる期間でアイテムの有効期限が終了します。オブジェクトがアクセスされるたびに、スライドする時間枠がリセットされます。これは頻繁に使用される項目がキャッシュに格納されている時間を延ばします。

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

Shared Caching では、有効期限は常に [絶対] であり、既定の有効期限を設定する方法はありません。Shared Caching の項目の有効期限は 48 時間後に終了します。ただし、Put メソッドと Add メソッドを利用し、コードに明示的な有効期限を設定できます。ASP.NET プロバイダーは自動的にこれらのオーバーロードを使用し、セッション状態と出力キャッシュに明示的タイムアウトを提供します。いずれの場合でも、キャッシュ サイズが Shared Caching サービスの上限を上回るとき、キャッシュの中で最も使われていない項目が削除されます。

キャッシュされたオブジェクトが同時実行目的でロックされると、有効期限を過ぎても、キャッシュから削除されません。ロックが解除されると、有効期限を過ぎている場合、すぐにキャッシュから削除されます。

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

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

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

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

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

noteメモ
Shared Caching では通知はサポートされません。

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

詳細および例については、「Azure In-Role Cache のローカル キャッシュ」を参照してください。

各キャッシュ ホストでキャッシュに使用可能なメモリ容量を維持するために、最近、最も使われていないもの (LRU) の削除をサポートしています。しきい値を使用し、メモリをクラスターのキャッシュ ホスト全体で均等に配分できます。このしきい値は 2 つの要素によって決まります。それらは、各コンピューターで使用可能な物理メモリの量と、各コンピューターで予約されているキャッシュ メモリの割合です。

メモリの使用量がメモリのしきい値を超えると、有効期限が切れているかどうかにかかわらず、メモリ不足が解消するまでオブジェクトがメモリから削除されます。その後、キャッシュされたオブジェクトはキャッシュ クラスターの他のマシンに経路変更され、メモリの最適な配分が維持されます。

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

有効期限と削除の動作は、クラスター構成設定の名前付きキャッシュ レベルで構成されます。

次のメソッドを利用すると、キャッシュにある既定の設定を上書きできます。

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

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

  • ResetObjectTimeout メソッドを利用すると、キャッシュの有効期間設定を上書きし、オブジェクトの有効期間を明示的に延長できます。

有効期限または削除設定に関係なく、キャッシュ クラスターが再起動すると、キャッシュのすべてのオブジェクトが消去されます。データがキャッシュにない場合、アプリケーションコードはデータ ソースからキャッシュを再度読み込む必要があります。これはしばしばキャッシュ アサイド プログラミング パターンと呼ばれます。

関連項目

表示:
© 2016 Microsoft