同一项目中的Azure共享缓存和共存缓存

时间:2013-04-10 15:05:32

标签: caching azure azure-caching

所以我想知道是否可以将Azure共享缓存和新的共存缓存用于Web角色?我想在旧的Azure共享缓存中存储会话状态,以使用VIP交换保留应用程序部署之间的会话状态。我想使用新的共存缓存来缓存内存中的值,这些值经常访问但在数据库中不经常更改,因此非常适合使用新的共存缓存和通知进行缓存。

2 个答案:

答案 0 :(得分:1)

应该可以正常工作 - 只需在配置部分为缓存使用不同的名称:

<dataCacheClients>
    <dataCacheClient name="colocated">
       <autoDiscover isEnabled="true" identifier="[cache cluster role name]" />
    </dataCacheClient>
    <dataCacheClient name="shared">
       <hosts>
           <host name="yourcachename.cache.windows.net" cachePort="22233" />
       </hosts>
    </dataCacheClient>
</dataCacheClients>

并在代码中:

DataCache coloCache = new DataCache("colocated");
DataCache sharedcache = new DataCache("shared");

并在你的会话配置中:

<!-- Windows Azure Caching session state provider -->
<sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
  <providers>
    <add name="AFCacheSessionStateProvider" 
      type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
      cacheName="shared" 
      dataCacheClientName="shared" 
      applicationName="AFCacheSessionState"/>
  </providers>
</sessionState>

答案 1 :(得分:0)

我认为不可能让两者兼顾。似乎一个版本的缓存需要101.0.0.0版本的Microsoft.ApplicationServer.Caching和Microsoft.Web.DistributedCache,而另一个版本需要1.0.0.0版本。这可以通过为Azure缓存和Azure共享缓存安装不同的nuget包来验证。如果有人知道如何同时运行,请在此处发布解决方案。

我已使用Microsoft ASP.NET Universal Providers将会话数据迁移到Azure SQL,并将分布式缓存添加到项目中,而不是同时使用这两种缓存方法。