C# 查找具有部分键字符串的 WebCache

本文关键字:字符串 WebCache 查找 | 更新日期: 2023-09-27 18:20:33

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")

有没有办法找到所有以"苹果"开头的缓存并删除它们? 也许正则表达式..也许不是,有什么想法吗?

C# 查找具有部分键字符串的 WebCache

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

然后,您可以枚举条目,检查键是否与您的条件匹配,并调用 MemoryCache.Remove() 删除您不需要的键。

但是:这有其警告,我建议在走这条路之前至少三思而后行:

  1. 根据缓存中的并发插入,您可能永远不会删除所需的所有条目。因为当您使用它时,新条目 - 您通常想要删除 - 可能已经被其他人插入。

  2. 枚举内存缓存被警告为"资源密集型",应避免。在"默认"缓存实例上加倍如此,该实例可能被相当多的设施用作其后备缓存(详细信息见此处(。实际上,MSDN甚至告诉您"不要在生产应用程序中这样做">

最好跟踪您在其他地方添加的条目,而不是在确实需要时使用该"索引"显式删除条目。只要确保这个"其他地方"不会最终成为内存泄漏,也就是说你必须确保它最终被清除(你可以使用MemoryCache的更改通知(。