4

有没有办法使用通配符或正则表达式来搜索和删除项目HttpContext.Cache

我可以在我的缓存中拥有“item_1”、“item_2”、...、“item_n”,并且我想从缓存中删除与模式为“item_*”的键相关的所有值。如何在不检查项目是否存在然后将其删除的情况下实现这一目标?

前任:

代替:

HttpContext.Current.Cache.Remove("item_1")
HttpContext.Current.Cache.Remove("item_2")
HttpContext.Current.Cache.Remove("item_3")

我想要类似的东西:

HttpContext.Current.Cache.Remove("item_*")
4

2 回答 2

2

您可以像这样循环这些项目:

foreach(var key in HttpContext.Current.Cache)
{
    if (key.StartsWith("item_"))
    {
        // remove the corresponding item here.
    }
}

基本示例,需要进行一些调整以匹配您的实现。

AFAIK 您无法根据通配符删除项目,因为您需要特定的密钥。(请证明我错了)

于 2014-11-05T07:20:52.140 回答
0
^HttpContext\.Current\.Cache\.Remove\("item_.*?"\)$

你可以试试这个。替换为empty string.See demo。

http://regex101.com/r/sU3fA2/65

于 2014-11-05T07:22:43.807 回答