.net MemoryCache - 通知删除的项目

Posted

技术标签:

【中文标题】.net MemoryCache - 通知删除的项目【英文标题】:.net MemoryCache - notify on item removed 【发布时间】:2014-05-21 01:55:35 【问题描述】:

我正在使用带有 .NET 4.0 和 c# 的 .net 内存缓存,我希望在删除项目时通知我的应用程序(这样我就可以将它已被删除到日志文件或通知 UI,该项目已被删除)。

有没有办法做到这一点。

我使用的是 System.Runtime.Caching.MemoryCache 而不是 System.Web.Caching

【问题讨论】:

【参考方案1】:

编辑:如果您使用System.Runtime.Caching.MemoryCache,则CacheItemPolicy 对象上有一个callback 用于删除,还有一个用于更新。

myMemoryCache.Set("key", null, new CacheItemPolicy() RemovedCallback = new CacheEntryRemovedCallback(CacheRemovedCallback) /* your other parameters here */);

public void CacheRemovedCallback(CacheEntryRemovedArguments arguments)

    // do what's needed

初步回答

当 inserting data in the .net cache 用于 System.Web.Caching 命名空间时,您可以选择设置回调以通知删除

Cache.Insert("data", "", null, DateTime.Now.AddMinutes(1), System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.High, new CacheItemRemovedCallback(CacheRemovedCallback));

public string CacheRemovedCallback(String key, object value, System.Web.Caching.CacheItemRemovedReason removedReason)

    // here you can log, renew the value, etc...

Insert 方法还有一个签名,可让您将回调指定为 notified before the item is removed

【讨论】:

我没有使用 System.Web.Caching.Cache,我使用的是 System.Runtime.Caching MemoryCache,我已经更新了这个问题。 @DermFrench:编辑指出CacheItemPolicy上的回调 谢谢,我会检查一下,看看它是否有效你可以编辑上面的实际代码,仍然说 System.Web.Caching ,所以我可以接受作为答案,也许放一个)如果使用 web.caching,这就是你的做法,b) 如果使用 System.Runtime.Caching,你就是这样做的。

以上是关于.net MemoryCache - 通知删除的项目的主要内容,如果未能解决你的问题,请参考以下文章

在 .NET 中,为啥 ObjectCache 是 MemoryCache 的首选类型?

在 asp.net 核心的嵌套函数中使用 MemoryCache

.Net Core缓存组件(MemoryCache)缓存篇

正确使用 .NET MemoryCache 的锁定模式

检查和清除 .NET MemoryCache。 RAM不断增加

.NET Core 2.0迁移技巧之MemoryCache问题修复