如何删除Azure托管缓存服务除会话对象以外的所有对象

时间:2014-09-01 06:19:27

标签: caching azure service

我们正在为我们的云服务使用Microsoft Azure缓存服务,该服务具有多个Web角色和辅助角色实例。托管缓存还用于存储用户会话。一切都配置好了。

有没有什么方法可以一次刷新/清除托管缓存服务中的所有对象?我们不想通过它的密钥删除每个对象。 如果有办法做到这一点,那么我们如何清除除用户会话对象之外的所有内容?

我知道API的文档说它清除了缓存中的所有对象,但不确定它是否适用于托管缓存服务? 的 Microsoft.ApplicationServer.Caching.Clear()

static DataCacheFactoryConfiguration cacheFactoryConfiguration = new DataCacheFactoryConfiguration("default");

static DataCacheFactory cacheFactory = new DataCacheFactory(cacheFactoryConfiguration);

static DataCache cache = cacheFactory.GetDefaultCache();

cache.Clear();

2 个答案:

答案 0 :(得分:0)

没有直接的API来实现这一目标。如果您没有为缓存的对象指定生存期,则会在48小时后将其清除。

答案 1 :(得分:0)

我设法通过创建另一个专门用于存储会话的命名缓存来解决此问题。 您需要做的就是配置Web应用程序(修改web.config)并让azure分布式缓存会话提供程序知道新的命名缓存名称。 e.g。

 <sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
   <providers>
     <add name="AFCacheSessionStateProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="dedicatednamedcache" dataCacheClientName="dedicatednamedcache" applicationName="AFCacheSessionState"/>
   </providers>
 </sessionState>

所以在清除整个缓存时,只需清除命名缓存(默认命名缓存),而不是用作会话存储的命名缓存。