当前位置:  开发笔记 > 编程语言 > 正文

AppFabric获得命名缓存对象计数

如何解决《AppFabric获得命名缓存对象计数》经验,为你挑选了1个好方法。

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

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

我目前正在尝试以下方法:cache.GetObjectsInRegion("cacheName").Count();

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



1> PhilPursglov..:

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

将对象添加到AppFabric缓存时,无论您是否指定该区域,它都会进入某个区域.创建缓存时,会创建一组默认区域(我的测试装备中有1024个Default_Region_0000,Default_Region_0001依此类推),并且当项目添加到缓存中时,我假设有一些算法可以确定哪个区域他们进去了.

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

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

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


命名区域不会在参与节点之间分发,从而大大降低了分布式群集的价值.
LINQified:`cache.GetSystemRegions().SelectMany(regionName => cache.GetObjectsInRegion(regionName)).Count()`
推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有