кэш appfabric очистить все объекты - PullRequest
11 голосов
/ 20 июня 2011

Существует ли какой-либо метод, позволяющий просто очистить все объекты в DataCache?

Я мог бы использовать метод DataCache.GetObjectsByAllTags, но для этого требовался регион, который я не могу использовать, поскольку мне нужно обмениваться объектами между несколькими узлами кэша.

Ответы [ 4 ]

7 голосов
/ 05 июля 2011

Нет простого .Clear () для объекта DataCache, но использование следующего очистит кэш на хостах Appfabric:

/ * Предполагается, что DataCache правильно настроен Microsoft.ApplicationServer.Caching.Client.DataCache объект * /

public void Clear()
{
   Parallel.ForEach(DataCache.GetSystemRegions(), region =>
   {
      DataCache.ClearRegion(region);
      var sysRegion = DataCache.GetSystemRegionName(region);
      DataCache.ClearRegion(sysRegion);
   });
}

Проблема в том, что если в вашей конфигурации установлены DataCacheLocalCacheProperties, вы все равно будете извлекать элементы из локальной реплики до тех пор, пока не произойдет тайм-аут или уведомление.Я все еще ищу способ аннулировать элементы в локальной реплике немедленно.

3 голосов
/ 20 июня 2011
0 голосов
/ 27 октября 2013

Это метод очистки кеша, который я использовал. Чтобы убедиться, что элементы кэша были очищены, я запустил get-cachestatistics в командной оболочке.

public void Clear()
{
   Parallel.ForEach(DataCache.GetSystemRegions(), new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, region =>
   {
      DataCache.ClearRegion(region);
   });
}
0 голосов
/ 03 июня 2013
$hostname = 'server.lan'
$endpoints = New-Object -TypeName System.Collections.Generic.List[Microsoft.ApplicationServer.Caching.DataCacheServerEndpoint]
$endpoints.Add((New-Object -TypeName Microsoft.ApplicationServer.Caching.DataCacheServerEndpoint -ArgumentList $hostname, 22233))
$cache = ( New-Object -TypeName Microsoft.ApplicationServer.Caching.DataCacheFactory -ArgumentList ( New-Object -TypeName Microsoft.ApplicationServer.Caching.DataCacheFactoryConfiguration -Property @{ Servers = $endpoints } ) ).GetCache('Pricing')
$cache.GetSystemRegions() | %{ $cache.ClearRegion( $_ ) }
...