- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我发现自己进入了一个没有正确清理的CacheItem
。在查看 MSDN 并纠正自己使用基于 Utc 的计算时,我发现了以下令人困惑的信息:
AbsolutExpiration
用于设置CacheItem
的“keep-alive”,Priority.NotRemovable
用于强制CacheItem
永远存在。没有关于哪个属性覆盖另一个的通知。
下面的代码进行编译,SQL Profiler 也确认数据库只被查询一次,而所有其他请求都来自缓存。
CacheItemPolicy _cachePolicy = new CacheItemPolicy()
{
AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddHours(6)),
Priority = CacheItemPriority.NotRemovable
};
我假设这段代码强制缓存项永久保留,但在创建 12 小时后被清除,这与 MSDN 关于该设置的说明一致。
"Cache implementations should set the NotRemovable priority for a cache entry only if the cache implementation provides ways to evict entries from the cache and to manage the number of cache entries"
那么另一方面,为什么这两个属性会一起工作呢?实现是否带来某种“更不可移动”?
最佳答案
所以根据this “NotRemovable”可防止缓存条目被自动删除(如缓存空间不足时),但会在其过期或您手动将其从缓存中取出时删除。
NotRemovable The cache items with this priority level will not be automatically deleted from the cache as the server frees system memory. However, items with this priority level are removed along with other items according to the item's absolute or sliding expiration time.
关于c# - 缓存 'Priority' 和 'AbsoluteExpiration' 是如何协同工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926362/
当使用 MemoryCache 时,可以设置 AbsoluteExpiration AbsoluteExpirationRelativeToNow 例子: cache.GetOrCreate(
下面是缓存用户无效登录尝试的代码。使用“绝对过期”缓存策略将项目添加到缓存中。 如果我只添加一项 - 它会在 2 分钟后按预期过期。但是如果我更新那个缓存的项目(没有明确指定缓存策略) - 该项目仍然
我正在尝试在 .net 4.5 中使用 MemoryCache 来跟踪并自动更新各种项目,但似乎无论我将什么设置为 AbsoluteExpiration 它总是只会在 15 秒或更长时间后过期。 我希
我发现自己进入了一个没有正确清理的CacheItem。在查看 MSDN 并纠正自己使用基于 Utc 的计算时,我发现了以下令人困惑的信息: CacheItemPolicy.Priority Cache
我向 IMemoryCache 添加一个值 _cache.Set("Key", "Value", DateTimeOffset.UtcNow); 我想通过其他方法获取这个key的绝对过期值。 或者 我
你好, 如何使用 absoluteExpiration 和 slidingExpiration ,如果我同时指定它们我得到:absoluteExpiration 必须是 DateTime.MaxVal
我是一名优秀的程序员,十分优秀!