日常生活の中で、ミルクのカートンが冷蔵庫に長時間とどまり、捨てるのを忘れたという経験があったに違いありません。 次に起こることは、あなたがあなたの冷蔵庫に古くなったミルクを持っていて、スペースを占めていて、役に立たず、消費された場合にのみ有害である可能性があるということです。 同様に、キャッシュ内のデータにも有効期限が付いているはずです。 キャッシュに長期間保持されているデータは(ミルクのように)古くなり、役に立たず、キャッシュ内のスペースを占有するだけです。 そして、両方の場合の解決策は似ています: それを捨てる!
このブログは、キャッシュ内のデータを最新の状態に保ち、古いデータを破棄するための有効期限戦略について説明しています。
キャッシュデータの有効期限:必要性と概念
eコマースWebサイトを運営していて、これらの製品の情報をキャッシュに追加したとします。 製品の情報は、長期間、変更されることなくキャッシュに保持されます。 しかし、現在、何らかの理由で、一部の製品の価格がデータソースで更新されています。 この場合、実際には古いキャッシュデータである古い価格を顧客がまだ表示しているため、データの不整合が発生します。
NCache データに時間制限を設定できる有効期限を提供します。制限に達すると、データは無効になります。 無効化されたデータは、事前定義後にキャッシュから削除する必要があります クリーンインターバル。 これは、すべての期限切れアイテムがキャッシュから自動的に削除されるまでの間隔(ユーザーが設定)です。 したがって、期限切れのアイテムはすぐにはキャッシュから削除されません。
の有効期限の種類 NCache
NCache ユーザーの要件を満たすために、次の戦略を提供します。
- 絶対/デフォルトの絶対有効期限
- スライディング/デフォルトのスライディング有効期限
これらのタイプとその使用法の両方を詳しく見ていきます。
絶対有効期限
この戦略では、無効にする必要のあるアイテムで絶対時間を指定します。 指定された時間は UTC 時間形式、したがって、任意のゾーンで指定された時間は、キャッシュサーバーでUTC時間形式に変換されます。 時間は 秒から時間、日から月、および時間が経過すると、アイテムは無効化または期限切れになります。 明確にするために図1を見てください。
使用事例: アイテムをキャッシュに保持する必要がある期間を見積もることができる場合。 たとえば、期間限定の商品が発売され、24時間後に販売できない場合、アイテムは24時間の絶対有効期限で追加され、その後、商品はキャッシュから期限切れになります。
5分後に期限切れになるアイテムをキャッシュに追加することを示すコード例を見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Pre-condition: Cache is already connected // Get product from database against given product ID Product product = FetchProductFromDB(1001); // Generate a unique cache key for this product string key = $"Product:{product.ProductID}"; // Create a new CacheItem for this product with expiry var cacheItem = new CacheItem(product); var expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(5)); cacheItem.Expiration = expiration; cache.Insert(key, cacheItem); |
スライド式の有効期限
名前が示すように、この戦略は、データが使用されている限り、データをキャッシュに保持します。 そのため、特定の時間使用されていないデータは無効になります。 スライド式の有効期限で追加されたデータにアクセスするたびに、そのデータがキャッシュに存在する期間が延長されます。 たとえば、スライド間隔が30秒のアイテムが、30秒間アクセスされなかった場合、そのアイテムは期限切れになります。 同様に、30秒以内にアクセスされた場合、アイテムの有効期間はキャッシュ内でさらに30秒超過します。
使用事例: ユーザーの資格情報にアクセスするためのアプリケーションがあるとします。 ユーザーがアクティブでアプリケーションを使用している限り、ユーザーにアクセスを提供する必要があります。 スライド式の有効期限は、アクティブなユーザーを追跡することでセッションを維持できるような場合に役立ちます。
以下の例では、5分のスライド有効期限が製品に追加されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Get product from database against given product ID Product product = FetchProductFromDB(1001); // Generate a unique cache key for this product string key = $"Product:{product.ProductID}"; // Create a new CacheItem for this product with expiry var cacheItem = new CacheItem(product); var expiration = new Expiration(ExpirationType.Sliding, TimeSpan.FromMinutes(5)); cacheItem.Expiration = expiration; cache.Insert(key, cacheItem); |
での立ち退き NCache 絶対有効期限 スライド式の有効期限
デフォルトの有効期限戦略
NCache また、デフォルトの有効期限を追加して、手動で構成する手間を省くことができます。 これらは、を使用してのみ構成できます NCache Webマネージャーまたは構成ファイル(ブログの後半に表示)。 デフォルト値は次のとおりです。
- デフォルトの絶対値
- デフォルトのスライド
- デフォルトの絶対より長い
- デフォルトのスライドが長くなります
デフォルト値は、すべての有効期限戦略で5秒です。 参照してください デフォルトの有効期限 で徹底的に説明 NCache のドキュメントで詳しく説明されています)。
を使用して有効期限を構成します NCache Webマネージャ
有効期限を有効にし、を使用して期間を設定できます NCache Webマネージャー。 方法をお見せしましょう:
構成ファイルを使用して有効期限を構成する
で有効期限を有効にすることもできます NCache 構成ファイルを使用して(config.ncconf)にインストールされている NCache デフォルトでディレクトリをインストールします。 下タグ、あります以下に示すタグ:
1 2 3 4 5 |
<expiration-policy enabled="True"> <absolute-expiration longer-enabled="False" longer-value="5" default-enabled="False" default-value="30"/> <sliding-expiration longer-enabled="False" longer-value="5" default-enabled="False" default-value="20"/> </expiration-policy> |
同様に、以下に示すように、期限切れのアイテムがキャッシュから削除されるまでのクリーンアップ間隔を指定できます。
1 2 3 |
<cache-settings ... > <cleanup interval="15sec"/> </cache-settings> |
期限切れのアイテムの一括削除
個々のアイテムの削除によって引き起こされるパフォーマンスの低下を回避するために、キャッシュ内の期限切れのアイテムはすべて一括で削除されます。 ただし、削除するアイテムのバルクサイズと、期限切れデータのXNUMXつの連続するバルク削除間の遅延を構成できます。 NCache 付属しています Alachisoft.NCache.service.exe.config のインストールディレクトリに配置されたファイル NCache 次の設定可能なタグがあります。
1 2 |
<add key="NCacheServer.ExpirationBulkRemoveSize" value="10"/> <add key="NCacheServer.ExpirationBulkRemoveDelay" value="0"/> |
知っておくべき事実
- 有効期限なし(絶対またはスライド)でアイテムがキャッシュに追加された場合、手動で削除されるまで、そのアイテムはキャッシュに永久に残ります。
- 再起動する必要があります NCache 変更を有効にするために構成ファイルを使用して何かを構成した後のサービス。
- In NCache、有効期限はトポロジごとに異なる動作をします。すべてが完全に説明されています。 クラスタ化された環境での有効期限.
まとめる!
したがって、これまでに説明したことはすべて、キャッシュ内の古いデータを効率的に管理する必要があり、有効期限がそれを行う方法であるという事実に要約されます。 これは、提供された手法に基づいてキャッシュからデータを期限切れにする手法です。 NCache 手間をかけずにこれらのことに対処するのに役立ちます。