AppFabric缓存混乱

时间:2014-04-10 17:33:02

标签: c# caching appfabric

因此,我使用AppFabric for Windows Server作为分布式缓存系统,该系统将具有用于形成缓存系统的集群。

我在文档中读到的一件事:

为获得最佳性能,仅为不经常更改的对象启用本地缓存。对于频繁更改的数据使用本地缓存可能会增加客户端处理陈旧对象的可能性。虽然您可以降低ttlValue并使进程更频繁地刷新本地缓存,但群集上增加的负载可能会超过拥有本地缓存​​的好处。在频繁更改数据的情况下,最好禁用本地缓存并直接从群集中提取数据。

http://msdn.microsoft.com/en-us/library/hh351483(v=azure.10).aspx

现在,由于我的情况是对象会频繁更改,我如何直接访问缓存而不是通过本地缓存?这一部分不清楚,或者我在这里误解。

有这方面的例子吗?

1 个答案:

答案 0 :(得分:4)

您不需要进行任何明确的编码工作。流程如下:

  1. 您设置了具有缓存群集的AppFabric缓存服务器。
  2. 您的客户端应用使用DataCache客户端与此缓存服务器进行交互。
  3. 当您使用数据缓存客户端请求数据时,它将对服务器进行网络调用并获取数据。服务器通过线路发回数据,并由数据缓存客户端库反序列化并提供给您。
  4. 在客户端应用程序中的数据缓存配置设置中启用localcache时,数据缓存客户端所做的是在客户端应用程序的内存中保留此反序列化对象的引用。
  5. 下次请求相同的数据时,它会在此进程内存中检查该对象,如果找到,则不进行数据缓存服务器调用。如果没有找到,它将从#1开始重复该过程。
  6. 因此,如果对象频繁更改/过期,则只需禁用本地缓存(因为与服务器同步的开销增加),数据缓存客户端将始终转到服务器。

    当数据频繁更改并启用本地缓存时,您可能会在本地缓存中存在过时数据,而其他数据缓存客户端可能已更新服务器上的同一对象。

    本地缓存只是可以利用的额外一层性能优势。

    您可以通过代码或配置启用/禁用它。

    <localCache
      isEnabled="true"
      sync="TimeoutBased"
      objectCount="100000"
      ttlValue="300" />
    

    通过代码:http://msdn.microsoft.com/en-us/library/ee790857(v=azure.10).aspx 通过配置:http://msdn.microsoft.com/en-us/library/ee790880(v=azure.10).aspx