キャッシュ内の絶対データの有効期限
NCache キャッシュ項目の絶対有効期限を設定できます。 これにより、クライアントが指定した正確な日時にアイテムの有効期限が切れます。 絶対有効期限は、キャッシュ内で限られた時間内に必要な項目に指定できます。 たとえば、ある企業が特定の製品について 24 時間のフラッシュ セールを発表するとします。 これらのアイテムは 24 時間の絶対有効期限でキャッシュできるため、販売が終了するとすぐにキャッシュから期限切れになります。
またこれ DateTime
値はに変換されます UTC時間 キャッシュ サーバーとクライアントが異なるタイム ゾーンにある場合に対応するため。 したがって、アイテムはユーザーが指定した正確な時刻に期限切れになります。
前提条件
絶対有効期限のあるアイテムの追加/更新
Note
この機能は以下でも利用できます NCache Professional.
キャッシュアイテムを追加/更新して、有効期限を設定します。 インセット 方法。
CacheItem
によって提供されるカスタムクラスです NCache これを使用すると、キャッシュにデータを追加でき、このクラスのオブジェクトに関連付けられた追加のメタデータを設定することもできます。 このメタデータは、有効期限、依存関係などのアイテムのプロパティを定義します。
次の例では、の値を設定します Expiration
CacheItem のプロパティを 5 分の絶対有効期限に設定すると、キーが存在しない場合はキャッシュに追加され、キーが存在する場合は項目が更新されます。 これ CacheItem
5 分後にキャッシュから削除されます。
// Precondition: 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
var cacheItem = new CacheItem(product);
// Set Expiration TimeSpan
var expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(5));
cacheItem.Expiration = expiration;
// Add/Update item with expiration
cache.Insert(key, cacheItem);
// Precondition: 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.getProductID();
// Create a new CacheItem for this product
CacheItem cacheItem = new CacheItem(product);
// Set Expiration type and TimeSpan
Expiration expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(5));
cacheItem.setExpiration(expiration);
// Add/Update item in cache with expiration
cache.insert(key, cacheItem);
// This is an async method
// Precondition: Cache is already connected
// Get product from database against given product ID
var product = this.fetchProductFromDB(1001);
// Generate a unique cache key for this product
var key = "Product:" + product.getProductID();
// Create a new CacheItem for this product
// You also need to specify the FQN (Fully Qualified Name) of the class
var cacheItem = new ncache.CacheItem(product,"FQN.Product");
// Set Expiration type and TimeSpan
var expiration = new ncache.Expiration(ncache.ExpirationType.Absolute, ncache.TimeSpan.FromMinutes(5));
cacheItem.setExpiration(expiration);
// Add/Update item in cache with expiration
await this.cache.insert(key, cacheItem);
# Precondition: Cache is already connected
# Get product from database
product = fetch_product_from_db()
# Generate a unique cache key for this product
key = "Product:" + product.get_product_id()
# Create a new CacheItem for this product
cache_item = ncache.CacheItem(product)
# Set Expiration type and TimeSpan
expiration = ncache.Expiration(ncache.ExpirationType.ABSOLUTE, ncache.TimeSpan.from_minutes(5))
cache_item.set_expiration(expiration)
# Add / Update item in cache with expiration
cache.insert(key, cache_item)
API で絶対有効期限を指定するには、 DefaultAbsolute
および DefaultAbsoluteLonger
で設定された値 NCache 管理センターまたは config.ncconf。 これにより、必要に応じて、コードを変更せずに値を外部から変更できる柔軟性が得られます。
次のコードは、構成されたデフォルト有効期限 (この場合は DefaultAbsolute) を項目に関連付けます。キーがキャッシュに存在しない場合はその項目をキャッシュに追加し、キーが存在する場合は有効期限を使用して項目を更新します。 設定された時間が経過すると、アイテムの有効期限が切れます。
重要
デフォルトの有効期限を有効にするには、 NCache 管理センター or config.ncconf。 > [!IMPORTANT] の API を渡し、それが NCache 管理センターまたは config.ncconf、 うまくいかないだろう。
// Precondition: 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 cacheItem instance for product
var cacheItem = new CacheItem(product);
// Set Expiration type
var expiration = new Expiration(ExpirationType.DefaultAbsolute);
cacheItem.Expiration = expiration;
// Add/Update item into the cache with default expiration
CacheItemVersion version = cache.Insert(key,cacheItem);
// Precondition: 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.getProductID();
// Create a cacheItem instance for product
CacheItem cacheItem = new CacheItem(product);
// Set Expiration type
Expiration expiration = new Expiration(ExpirationType.DefaultAbsolute);
cacheItem.setExpiration(expiration);
//Add/Update item into the cache with default expiration
CacheItemVersion version = cache.insert(key, cacheItem);
// This is an async method
// Precondition: Cache is already connected
// Get product from database against given product ID
var product = this.fetchProductFromDB(1001);
// Generate a unique cache key for this product
var key = "Product:" + product.getProductID();
// Create a cacheItem instance for product
// You also need to specify the FQN(Fully Qualified Name) of the class
var cacheItem = new ncache.CacheItem(product,"FQN.Product");
// Set Expiration TimeSpan
var expiration = new ncache.Expiration(ncache.ExpirationType.DefaultAbsolute);
cacheItem.setExpiration(expiration);
var version = await this.cache.insert(key, cacheItem);
# Precondition: Cache is already connected
# Get product from database
product = fetch_product_from_db()
# Generate a unique cache key for this product
key = "Product:" + product.get_product_id()
# Create a new CacheItem for this product
cache_item = ncache.CacheItem(product)
# Set Expiration type and TimeSpan
expiration = ncache.Expiration(ncache.ExpirationType.DEFAULT_ABSOLUTE)
cache_item.set_expiration(expiration)
# Add/Update item in cache with expiration
version = cache.insert(key, cache_item)
絶対有効期限を既存のアイテムに設定します
Note
この機能は以下でも利用できます NCache Professional.
NCache また、既存のキャッシュ アイテムをキャッシュに再挿入することなく、そのアイテムに絶対有効期限を設定できる柔軟性も提供します。 これは、 CacheItemAttribute
クラス、 AbsoluteExpiration
キャッシュ項目に対して設定されるプロパティ。 これにより、アイテムがキャッシュから無効化される正確な日時が設定されます。 次に、属性は、アイテムの既存のキーに対して設定されます。 UpdateAttributes
方法 ICache
.
次の例では、有効期限が設定されていないキャッシュ内にすでに存在するアイテムの絶対有効期限を設定します。 これには、アイテムをキャッシュに再追加または再挿入する必要はありません。
// Precondition: Cache is already connected
// Precondition: Item already exists in cache
string key = "Product:1001";
// Create a CacheItemAttribute for absolute expiration
// and set its value to 5 seconds
var attr = new CacheItemAttributes();
attr.AbsoluteExpiration = DateTime.Now.AddSeconds(5);
// Set Absolute Expiration of 5 seconds against existing key
cache.UpdateAttributes(key, attr);
// Precondition: Cache is already connected
// Precondition: Item already exists in cache
String key = "Product:1001";
// Create a CacheItemAttribute for absolute expiration and set its value to 5 seconds
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.SECOND, 5);
CacheItemAttributes attr = new CacheItemAttributes();
attr.setAbsoluteExpiration(calendar.getTime());
// Set Absolute Expiration of 5 seconds against existing key
cache.updateAttributes(key, attr);
// This is an async method
// Precondition: Cache is already connected
// Precondition: Item already exists in cache
var key = "Product:1001";
// Create a CacheItemAttribute for absolute expiration
// and set its value to 5 seconds
var time = new Date().getSeconds()+5;
var attr = new ncache.CacheItemAttributes();
attr.setAbsoluteExpiration(time);
// Set Absolute Expiration of 5 seconds against existing key
await this.cache.updateAttributes(key, attr);
# Precondition: Cache is already connected
# Precondition: Item already exists in cache
key = "Product:1001"
# Create a CacheItemAttribute for absolute expiration and set its value to 5 seconds
time = datetime.now() + timedelta(seconds=5)
attr = ncache.CacheItemAttributes()
attr.set_absolute_expiration(time)
# Set Absolute Expiration of 5 seconds against existing key
cache.update_attributes(key, attr)
その他のリソース
NCache の絶対有効期限のサンプルアプリケーションを提供します GitHubの.
も参照してください
。ネット: Alachisoft.NCache.ランタイム.キャッシュ 名前空間
Java: comの。alachisoft.ncache.ランタイムキャッシュ 名前空間
Node.js: 満了 とに提供されます。
Python: ncache.ランタイムキャッシュ とに提供されます。