有効期限と削除 (AppFabric 1.1 キャッシュ)

キャッシュされたオブジェクトは、Microsoft AppFabric 1.1 for Windows Server でメモリに永久に残るわけではありません。Remove メソッドを使用して、キャッシュから明示的に削除される場合に加え、キャッシュされたオブジェクトは有効期限が切れたり、キャッシュ クラスターによって削除される場合もあります。

有効期限

キャッシュに有効期限を使用すると、キャッシュされたオブジェクトはキャッシュ クラスターによってキャッシュから自動的に削除されます。Put または Add メソッドを使用すると、特定のキャッシュされたオブジェクトをキャッシュに残しておく期間を決定するオプションのタイムアウト値を設定できます。オブジェクトがキャッシュされた時点でオブジェクトのタイムアウト値が提供されていない場合、名前付きキャッシュのクラスター構成設定で指定された値が、キャッシュのオブジェクトの有効期間の決定に使用されます。

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

有効期限が切れたオブジェクトがロック解除時にすぐ削除されないようにするため、Unlock メソッドでもキャッシュされたオブジェクトの有効期限延長をサポートしています。サポートされる同時実行モデルと同時実行メソッドの詳細については、「同時実行モデル (AppFabric 1.1 キャッシュ)」および「同時実行メソッド」を参照してください。

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

ローカル キャッシュの無効化には、次の 2 つの相補的な種類があります。タイムアウト ベースの無効化および通知ベースの無効化。ローカル キャッシュのプログラムによる有効化の例については、「AppFabric 1.1 ローカル キャッシュの有効化」を参照してください。ローカル キャッシュを有効にするアプリケーション構成ファイルの使用例については、「ローカル キャッシュの有効化 (XML)」を参照してください。

ヒント

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

タイムアウト ベースの無効化

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

通知ベースの無効化

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

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

警告

アプリケーションで通知を使用するには、通知を名前付きキャッシュで有効にする必要があります。New-Cache コマンドまたは Set-CacheConfig コマンドで NotificationsEnabled パラメーターを使用してください。詳細については、「Windows PowerShell によるキャッシュ管理 (AppFabric 1.1)」を参照してください。

削除

各キャッシュ ホストでキャッシュに使用可能なメモリ容量を維持するため、AppFabric は、最近、最も使われていないもの (LRU) の削除をサポートしています。基準値と呼ばれるしきい値を使用すると、メモリをクラスターのキャッシュ ホスト全体で均等に配分できます。

キャッシュ サーバー上でキャッシュ サービスのメモリ消費が低基準値のしきい値を超えると、AppFabric は既に有効期限が切れたオブジェクトの削除を開始します。

メモリ消費が高基準値のしきい値を超えると、メモリ消費が下がって低基準値に戻るまで、有効期限が切れているかどうかに関係なく、オブジェクトはメモリから削除されます。その後で、キャッシュされたオブジェクトは別のホストに経路変更され、メモリの最適な配分が維持されます。

有効期限と削除設定の指定

有効期限と削除ビヘイビアーは、クラスター構成設定の名前付きキャッシュ レベルで構成されます。これらのキャッシュレベル設定は、Windows PowerShell ベースのキャッシュ管理ツールで構成できます。詳細については、「Windows PowerShell によるキャッシュ管理 (AppFabric 1.1)」を参照してください。

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

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

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

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

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

関連項目

概念

AppFabric キャッシュの物理アーキテクチャ図 (AppFabric 1.1 キャッシュ)
AppFabric キャッシュの論理アーキテクチャ図 (AppFabric 1.1 キャッシュ)

  2012-03-05