ASP.Net AppFabric Cache缺少Flush/Clear和Count/GetCount方法?

Ted*_*sen 7 asp.net appfabric

我正在尝试使用EntLib将解决方案转换为使用AppFabric缓存.借助一些扩展方法,这是一个相当痛苦的过程.

我使用的扩展方法:

public static bool Contains(this DataCache dataCache, string key)
{
    return dataCache.Get(key) != null;
}

public static object GetData(this DataCache dataCache, string key)
{
    return dataCache.Get(key);
}
Run Code Online (Sandbox Code Playgroud)

但是我发现EntLib有两个很难转换的功能.即"Count"(计算缓存中的键数)和"Flush"(从缓存中删除所有数据).如果我可以迭代缓存中的密钥,两者都可以解决.

有一个方法被调用ClearRegion(string region),但是我需要在我使用的所有Get/Put/Add方法上指定一个区域名称,这需要一些手动容易出错的工作.

有没有办法获取缓存中的密钥列表?
我可以使用默认的区域名称吗?
如果我没有使用区域名称,如何刷新缓存?

Phi*_*ove 10

我以前的答案我的猜测作为高速缓存的内部工作原理,当你不指定区域,以及如何获得不在指定区域对象的个数.

我们可以使用相同的技术构建Flush方法:

public void Flush (this DataCache cache)
{
    foreach (string regionName in cache.GetSystemRegions()) 
    {     
        cache.ClearRegion(regionName) 
    } 
}
Run Code Online (Sandbox Code Playgroud)

正如我在那里所说,我认为命名区域可能是要走的路 - 在我看来,使用它们可以解决比它创造的问题更多的问题.

  • 如果使用区域,则会丢失缓存的分布式部分,因为区域仅在一个缓存主机上创建.我认为,一般来说,除非你有一个非常具体的理由使用它们(即标签),否则你会想要远离地区. (10认同)