Caching 混合使用AppFabric本地缓存和服务器缓存

Caching 混合使用AppFabric本地缓存和服务器缓存,caching,memory,appfabric,Caching,Memory,Appfabric,我刚开始使用AppFabric 我的应用程序是在医疗保健领域——我们有大约15000名系统用户,他们可以快速访问患者信息(例如,想象一组护士/医生在住院时访问患者) 我想做的是在内存中缓存某些项目(例如患者人口统计信息) 以及缓存主机服务器上的其他项目(如实验室、药物、诊断成像、报告)。底层数据来自各种第三方系统,其中一些系统返回数据的速度非常慢 有人知道是否可以指示某些项目进入本地缓存,而其他项目进入服务器?数据太多,无法全部装入内存。在查看MSDN文档时,下面是一个示例配置文件 <

我刚开始使用AppFabric

我的应用程序是在医疗保健领域——我们有大约15000名系统用户,他们可以快速访问患者信息(例如,想象一组护士/医生在住院时访问患者)

我想做的是在内存中缓存某些项目(例如患者人口统计信息) 以及缓存主机服务器上的其他项目(如实验室、药物、诊断成像、报告)。底层数据来自各种第三方系统,其中一些系统返回数据的速度非常慢

有人知道是否可以指示某些项目进入本地缓存,而其他项目进入服务器?数据太多,无法全部装入内存。在查看MSDN文档时,下面是一个示例配置文件

   <dataCacheClient requestTimeout="15000" channelOpenTimeout="3000" maxConnectionsToServer="1">
      <localCache isEnabled="true" sync="TimeoutBased" ttlValue="300" objectCount="10000"/>
      <clientNotification pollInterval="300" maxQueueLength="10000"/>
      <hosts>
         <host name="CacheServer1" cachePort="22233"/>
         <host name="CacheServer2" cachePort="22233"/>
      </hosts>
      <securityProperties mode="Transport" protectionLevel="EncryptAndSign" />
      <transportProperties connectionBufferSize="131072" maxBufferPoolSize="268435456" 
                           maxBufferSize="8388608" maxOutputDelay="2" channelInitializationTimeout="60000" 
                           receiveTimeout="600000"/>
   </dataCacheClient>

似乎启用本地缓存可以为整个缓存客户端启用

为了支持我描述的场景,这是否意味着我必须创建两个缓存客户端,并且我的代码必须知道/知道要将数据放入哪个缓存客户端?或者,在将数据存储到缓存中时,是否可以使用API/标志/参数?或者,使用区域/标记进行处理


谢谢

假设您使用的是不同配置的AppFabric 1.1。因此,使用您现有的示例,您可以执行以下操作:

<!-- local caching client -->
<dataCacheClient name="LocalCaching" requestTimeout="15000" channelOpenTimeout="3000" maxConnectionsToServer="1">
  <localCache isEnabled="true" sync="TimeoutBased" ttlValue="300" objectCount="10000"/>
  <clientNotification pollInterval="300" maxQueueLength="10000"/>
  <hosts>
     <host name="CacheServer1" cachePort="22233"/>
     <host name="CacheServer2" cachePort="22233"/>
  </hosts>
  <securityProperties mode="Transport" protectionLevel="EncryptAndSign" />
  <transportProperties connectionBufferSize="131072" maxBufferPoolSize="268435456" 
                       maxBufferSize="8388608" maxOutputDelay="2" channelInitializationTimeout="60000" 
                       receiveTimeout="600000"/>

然后,您只需根据您所处理的数据所需的缓存类型,在代码中从适当的工厂创建DataCache实例。

谢谢,这就是我要找的。我真傻,我的公司当时在v1.0上,没有意识到这一点。所以,如果我在v1.0上卡住了,有没有办法让这个多客户端工作?不幸的是,在1.0中没有基于配置的方法来解决这个问题。但是,通过自己编程配置DataCacheFactoryConfiguration实例,在纯代码中完全可以做到这一点。您只需要创建自己的配置条目来存储不同的属性。有什么想法吗?听起来你有一些二进制文件在某处不同步。我想这是在你的客户身上?如何引用客户端库?对于1.1IIRC,它们不再在GAC中,我建议使用ServerAppFabric.Client NuGet包。
DataCacheFactoryConfiguration localCachingFactoryConfig = new DataCacheFactoryConfiguration("LocalCaching");

DataCacheFactoryConfiguration remoteOnlyCachingFactoryConfig = new DataCacheFactoryConfiguration("RemoteOnlyCaching");