C#找到一个带有部分密钥字符串的WebCache?

时间:2015-11-05 05:12:10

标签: c# regex

using System.Web.Helpers

假设我添加了那些..

WebCache.Set("apple_1","some value")
WebCache.Set("apple_2","some value")
WebCache.Set("apple_3","some value")
WebCache.Set("peach_1","some value")
WebCache.Set("peach_2","some value")
WebCache.Set("peach_3","some value")

有没有办法找到密钥以“apple”开头的所有缓存并删除它们?也许是Regex ..也许不是,有什么想法吗?

1 个答案:

答案 0 :(得分:3)

看起来好像System.Web.Helpers.WebCache只是一个围绕"默认"的包装器。 MemoryCache实例,您可以通过MemoryCache.Default访问。

然后,您可以对条目进行枚举,检查密钥是否符合您的条件,并致电MemoryCache.Remove()以删除您不想要的条款。

然而:这有其警告,我建议在走这条路之前至少考虑两次:

  1. 根据并发插入缓存的情况,您可能永远不会最终删除所有要删除的条目。因为当你在它的时候,你通常想要删除的新条目可能已经被其他人插入了。

  2. 枚举MemoryCache正在被警告为“资源密集型”"应该避免。加上"默认"缓存实例可能被相当多的设施用作其后备缓存(详细信息请参阅here)。实际上MSDN告诉你“不要在生产应用程序中做到这一点”#34;

  3. 最好跟踪你在其他地方添加的条目,而不是使用" index"如果你真的需要,明确删除条目。只要确保这个"其他地方"不会因内存泄漏而结束,也就是说你必须确保它最终被清除(你可以使用MemoryCache的更改通知)。