AppFabric получает количество объектов именованного кэша - PullRequest
4 голосов
/ 19 ноября 2010

У меня есть именованный кеш, и я просто хочу (программно) вернуть его количество объектов.

У меня есть объект DataCache: cache = factory.GetCache ("cacheName");

Я сейчас пытаюсь сделать следующее: cache.GetObjectsInRegion ( "cacheName") Count ();.

Я понимаю, что регион отличается от именованного кэша, но я не вижу никаких других методов, которые позволили бы мне достичь этого (хотя я уверен, что есть). Есть мысли?

1 Ответ

8 голосов
/ 21 ноября 2010

Это не так просто, как вы могли ожидать - но это выполнимо.

Когда объект добавляется в кэш 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.

...