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”开头的缓存并删除它们?也许正则表达式..也许不是,有什么想法吗?
最佳答案
看起来 System.Web.Helpers.WebCache
只是“默认”MemoryCache 实例的包装器,您可以通过 MemoryCache.Default
访问它。
然后您可以枚举条目,检查键是否符合您的条件并调用 MemoryCache.Remove()
以删除不需要的键。
但是:这有它的警告,我建议在走这条路之前至少三思:
根据缓存中的并发插入,您可能永远不会按照自己喜欢的方式删除所有条目。因为在您进行操作时,新条目(您通常希望删除的条目)可能已经被其他人插入。
枚举 MemoryCache 被警告为“资源密集型”,应该避免。在“默认”缓存实例上加倍,它可能被相当多的设施用作它们的后备缓存(详细信息参见 here )。其实MSDN甚至告诉您“不要在生产应用程序中这样做”
最好跟踪您在别处添加的条目,而不是在确实需要时使用该“索引”明确删除条目。只需确保这个“其他地方”不会最终成为内存泄漏,也就是说,您必须确保它最终被清除(您可以为此使用 MemoryCache 的更改通知)。
关于C# 找到带有部分键字符串的 WebCache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33537149/