当您通过标签获取项目时,NCache不考虑滑动过期

时间:2019-01-25 13:37:21

标签: c# ncache

似乎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小时的窗口。

1 个答案:

答案 0 :(得分:0)

我在Github上遇到了同样的问题-您可能想看看下面的链接

https://github.com/Alachisoft/NCache/issues/33