AppFabric获得命名缓存对象计数

时间:2010-11-19 15:14:17

标签: c# appfabric

我有一个命名缓存,只想返回(以编程方式)其对象计数。

我有一个DataCache对象: cache = factory.GetCache(“cacheName”);

我目前正在尝试以下方法: cache.GetObjectsInRegion( “cacheName”)计数();

我意识到一个区域与命名缓存不同,但我没有看到任何其他方法可以让我实现这一点(虽然我确定有)。有什么想法吗?

1 个答案:

答案 0 :(得分:8)

这并不像你想象的那么简单 - 但它是可行的。

当对象添加到AppFabric缓存时,无论您是否指定该区域,它都会进入某个区域。创建缓存时,会创建一组默认区域(我的测试装备中有1024个,Default_Region_0000Default_Region_0001等等),并且当项目添加到缓存中时,我假设,一些算法确定他们进入哪个区域。

因此,要查找命名区域之外的缓存中的对象总数,您需要为每个默认区域运行GetObjectsInRegion:

int totalItemCount = 0;
foreach (string regionName in cache.GetSystemRegions())
{
    totalItemCount += cache.GetObjectsInRegion(regionName).Count();
}

考虑到这1024个区域的复杂性,我认为你可以说出一个令人信服的案例,即每个对象都应该在一个命名区域内:这样做实际上没有成本,而且可能会有一个好处,因为它变得更容易看到有多少对象在缓存中。如果这是您的常见要求,您还可以考虑将其作为DataCache类的扩展方法。