2010-11-19 2 views
4

명명 된 캐시가 있고 단순히 개체 수를 (프로그래밍 방식으로) 반환하려는.AppFabric 명명 된 캐시 개체 수 얻기

DataCache 개체가 있습니다. cache = factory.GetCache ("cacheName");

현재 다음을 시도하고 있습니다. cache.GetObjectsInRegion ("cacheName"). Count();

지역이 명명 된 캐시와 다르다는 것을 알고 있지만,이를 달성 할 수있는 다른 방법은 보이지 않습니다. (확신 할지라도). 이견있는 사람?

답변

8

예상했던 것처럼 간단하지는 않지만 할 수 있습니다.

개체가 AppFabric 캐시에 추가되면 영역을 지정하는지 여부에 관계없이 영역으로 이동합니다. 캐시가 만들어지면 기본 영역 집합이 만들어집니다 (내 시험 장치에 1024 개, Default_Region_0000, Default_Region_0001 등). 캐시에 항목이 추가 될 때마다 다음 중 어떤 것을 결정하는 알고리즘이 있다고 가정합니다. 그들이 들어가는 지역.

그래서, 이름이 지역의 외부 캐시에 객체의 총 수를 찾기 위해, 기본 지역의 모든 하나 GetObjectsInRegion를 실행해야합니다

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

이 1024 개 지역의 복잡성을 감안할 때, I 모든 객체가 명명 된 영역에 있어야한다는 설득력있는 사례를 만들 수 있다고 생각합니다. 이렇게하는 데 비용이 들지 않으며 캐시에 얼마나 많은 객체가 있는지 쉽게 파악할 수 있다는 이점이 있습니다. 이것이 일반적인 요구 사항이라면 DataCache 클래스의 확장 메서드로 생각할 수도 있습니다.

+0

매력처럼 작동합니다. 매우 감사드립니다. – downatone

+6

명명 된 영역은 참여 노드를 통해 배포되지 않으므로 분산 된 클러스터를 크게 평가 절하합니다. – andrewbadera

+3

LINQified :'cache.GetSystemRegions(). SelectMany (regionName => cache.GetObjectsInRegion (regionName)). –