【问题标题】:C# find a WebCache with partial key string?C# 找到带有部分键字符串的 WebCache?
【发布时间】:2016-02-05 20:24:28
【问题描述】:
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”开头的缓存并将它们删除?也许正则表达式..也许不是,有什么想法吗?

【问题讨论】:

    标签: c# regex


    【解决方案1】:

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

    然后您可以枚举条目,检查键是否符合您的条件并调用MemoryCache.Remove() 删除您不想要的那些。

    然而:这有它的警告,我建议在走这条路之前至少三思而后行:

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

    2. 枚举 MemoryCache 被警告为“资源密集型”,应该避免。将“默认”缓存实例翻倍,该实例可能被相当多的设施用作它们的后备缓存(详情请参阅here)。实际上MSDN 甚至告诉您“不要在生产应用程序中这样做”

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2020-02-12
      • 2019-01-24
      • 2019-05-01
      相关资源
      最近更新 更多