似乎NCache会在没有适当考虑CacheItem
属性的情况下逐出SlidingExpiration
对象,也许仅在通过OQL或基于Tag
的查找方法(例如{{ 1}}。
以下代码负责插入带有GetByAllTags()
属性的CacheItem
。
SlidingExpiration
以下代码负责使用 CacheItem cacheItem = new CacheItem(model)
{
Tags = new[]
{
new Tag(WalletTransactionKeyName),
new Tag(TagOwnerId(model.OwnerId)),
},
SlidingExpiration = TimeSpan.FromDays(30),
Priority = CacheItemPriority.Default
};
Cache.Insert(BuildCacheKey(WalletTransactionKeyName, model.TransactionId), cacheItem);
查找方法访问对象,这也是触摸此Tag
对象的唯一其他方法。
CacheItem
预计交易 Hashtable results = Cache.GetByAllTags(
new[]
{
new Tag(WalletTransactionKeyName),
new Tag(TagOwnerId(ownerId))
});
if (results.Count == 0)
{
return new List<WalletTransactionModel>();
}
List<WalletTransactionModel> transactions = new List<WalletTransactionModel>(results.Count);
foreach (DictionaryEntry entry in results)
{
WalletTransactionModel transaction = entry.Value as WalletTransactionModel;
if (transaction == null)
{
continue;
}
transactions.Add(transaction);
}
transactions = transactions.OrderByDescending(t => t.TransactionDateTime).ToList();
return transactions;
在CacheItem
上的生存时间为自上次访问以来至少有30天,但是,交易似乎已在一段时间内被逐出。 12小时的窗口。