Question

J'ai un cache nommé et que vous souhaitez simplement revenir (programme) son nombre d'objets.

J'ai un objet DataCache: cache = factory.GetCache ( "cacheName");

Je suis en train actuellement ce qui suit: cache.GetObjectsInRegion ( "cacheName") Count ();.

Je me rends compte qu'une région est différent d'un cache nommé, mais je ne vois pas d'autres méthodes qui me permettraient d'y parvenir (même si je suis sûr qu'il ya). Toute pensée?

Était-ce utile?

La solution

Ce n'est pas aussi simple que vous auriez pu attendre -. Mais il est faisable

Lorsqu'un objet est ajouté à un cache AppFabric, il va dans une région, si vous spécifiez la région ou non. Quand un cache est créé, un ensemble de régions par défaut se crée (1024 d'entre eux sur mon banc d'essai, Default_Region_0000, Default_Region_0001 et ainsi de suite), et que les éléments sont ajoutés dans le cache, il est, je suppose, un algorithme qui détermine de les régions où ils entrent dans.

Alors, pour trouver le nombre total d'objets dans l'extérieur du cache des régions nommées, vous devez exécuter GetObjectsInRegion pour chacune des régions par défaut:

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

Compte tenu de la complexité de ces 1024 régions, je pense que vous pourriez faire de façon convaincante que chaque objet doit être dans une région nommée: il n'y a effectivement pas de frais pour le faire, et un bénéfice potentiel en ce sens qu'il devient plus facile de voir combien les objets sont dans le cache. Si cela est une exigence commune pour vous, vous pouvez aussi penser à faire de cette méthode d'extension de la classe DataCache.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top