【问题标题】:AppFabric caching confusionAppFabric 缓存混乱
【发布时间】:2023-03-29 01:29:01
【问题描述】:

所以我使用 AppFabric for Windows Server 作为一个分布式缓存系统,它将有集群来形成一个缓存系统。

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

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

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

现在,由于我的情况是对象会经常更改,我将如何直接访问缓存而不是通过本地缓存?这部分没有说清楚或者我在这里可能有误解。

有这方面的例子吗?

【问题讨论】:

    标签: c# caching appfabric


    【解决方案1】:

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

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

    因此,如果对象频繁更改/过期,则只需禁用本地缓存(因为与服务器同步的开销增加),数据缓存客户端将始终转到服务器。

    当数据频繁更改并且启用了本地缓存时,您会冒着在本地缓存中存在陈旧数据的风险,而其他数据缓存客户端可能已经更新了服务器上的相同对象。

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

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

    <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

    【讨论】:

    • 谢谢。是否有任何参考或链接可以解释默认情况下禁用本地缓存?
    • 另一个问题是,如果我在应用程序配置文件中指定将配置所有集群计算机和端口的数据客户端,它会启用本地缓存吗?显然我不想要那个
    • 编辑了指向参考的答案。有一种明确的配置/代码方式来启用/禁用本地缓存..它不会偷偷摸摸。默认为假。
    • 发布后我找到了。哈哈。谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多