エクスポート (0) 印刷
すべて展開

有効期限と削除 (Azure キャッシュ用のインロール キャッシュ)

更新日: 2010年7月

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

キャッシュに有効期限を使用すると、キャッシュされたオブジェクトはキャッシュ クラスターによってキャッシュから自動的に削除されます。Put または Add メソッドを使用すると、特定のキャッシュされたオブジェクトをキャッシュに残しておく期間を決定するオプションのタイムアウト値を設定できます。オブジェクトがキャッシュに入れられたときにオブジェクトのタイムアウト値が指定されなかった場合、キャッシュされたオブジェクトは既定の有効期限を使用します。この既定値は、キャッシュ ロール上で を使用しているか Shared Caching を使用しているかによって異なります。

ロールベースの キャッシュ を使用する場合、次の 3 つの有効期限のオプションがあります。

 

有効期限の種類 説明

None

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

絶対

項目は、作成されてから一定時間が経過すると期限切れになります。

スライド

項目は、最後にアクセスされてから一定時間が経過すると期限切れになります。オブジェクトがアクセスされるたびにスライド時間ウィンドウがリセットされます。これにより、頻繁に使用される項目がキャッシュ内に長く残されます。

noteメモ
ローカル キャッシュと組み合わせて使用するときの [スライド] 期限の動作に注意する必要があります。項目がローカル キャッシュから読み取られる場合、キャッシュ クラスター上のオブジェクトはアクセスされません。そのため、項目がローカルで読み取られていてもサーバー上でその項目が期限切れになる可能性があります。

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

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

有効期限が切れたオブジェクトがロック解除時にすぐ削除されないようにするため、Unlock メソッドでもキャッシュされたオブジェクトの有効期限延長をサポートしています。

ローカル キャッシュの無効化には、次の 2 つの相補的な種類があります。タイムアウト ベースの無効化および通知ベースの無効化。

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

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

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

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

キャッシュ通知を使用する場合、アプリケーションでは新しい通知が使用可能かどうかを確認するため、キャッシュ クラスターが一定の間隔で確認されます。この間隔はポーリング間隔と呼ばれ、既定で 300 秒ごとに設定されています。ポーリング間隔は、アプリケーションの構成設定で秒単位で指定します。通知ベースの無効化を使用しても、タイムアウトはローカル キャッシュの項目に適用されることに注意してください。このため、通知ベースの無効化はタイムアウトベースの無効化と相互補完的になります。

詳細および例については、「ローカル キャッシュ (Azure キャッシュ用のインロール キャッシュ)」を参照してください。

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

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

Warning警告
削除を無効にした場合は、スロットルの危険が生じます。この場合、メモリがしきい値を超えても、メモリ不足を解消する機能はありません。この状態でクライアントがキャッシュに項目を追加しようとすると、例外を受け取ります。Shared Caching はキャッシュでの削除の無効化をサポートしていません。

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

次のメソッドでキャッシュの既定の設定を上書きできます。

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

  • PutAndUnlock および Unlock メソッドでは、ロック解除後にオブジェクトの有効期限の延長を許可するオーバーロードが提供されます。

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

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

関連項目

表示:
© 2014 Microsoft