【问题标题】:Azure Shared Caching and Co-located Caching in the same project同一项目中的 Azure 共享缓存和并置缓存
【发布时间】:2013-04-02 12:23:39
【问题描述】:

所以我想知道是否可以同时为 Web 角色使用 Azure 共享缓存和新的并置缓存?我想将会话状态存储在旧的 Azure 共享缓存中,以在使用 VIP 交换的应用程序部署之间保留会话状态。我想使用新的共存缓存来缓存内存中的值,这些值被频繁访问但在数据库中不经常更改,因此使它们成为与新的共存缓存和通知一起缓存的理想选择。

【问题讨论】:

    标签: caching azure azure-caching


    【解决方案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>
    

    【讨论】:

    • 我在执行此操作时似乎遇到了一些 dll 不匹配问题。我正在研究是否能找到合适的组合。
    • 共享缓存也可能会消失 - 谣言工厂!
    • 不要使用共享缓存,呃……不是很好。如果您需要在部署之间保持持久化,请将缓存放入 blob(或其他东西)并重新加载
    • @SimonMunro 理论上听起来不错,但是您有什么简单的方法可以在部署之间将缓存持久保存到 blob 存储吗?
    • 您可以列出缓存 (DataCache.GetObjectsByTag) 中的所有对象,将它们写入 blob,并在实例启动时加载它们。会话状态可能更棘手 - 也许编写一个会话状态提供程序,它可以使用 blob 和缓存作为存储(如果它在缓存中找不到对象,它会从 blob 加载),这无论如何都不是一个坏主意,就像缓存获取一样无论如何都会丢失完整的数据
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 2011-05-22
      • 2015-03-19
      相关资源
      最近更新 更多