了解使用localCache进行共同定位的缓存

时间:2014-07-08 07:33:03

标签: azure azure-web-roles azure-worker-roles azure-caching azure-configuration

以下是dataCacheClient中的web.config条目:

<dataCacheClients>
  <dataCacheClient isCompressionEnabled="true" name="default">
    <autoDiscover isEnabled="true" identifier="MyRoleName" />
    <localCache isEnabled="true" sync="NotificationBased" objectCount="100" ttlValue="3000" />
    <clientNotification pollInterval="300" />
    <transportProperties maxBufferSize="1073741824" maxBufferPoolSize="1073741824" />
  </dataCacheClient>
</dataCacheClients>

以上配置将在MyRoleName角色上使用共同缓存。除了共置缓存之外,我还表示我还想使用localCache。我对此仍感到有点困惑。

有人可以验证我的假设:

  • 除了共置缓存之外,缓存项目还将存储在每个角色的本地RAM(localCache)中,以提高缓存读取性能。
  • 此本地缓存是“NotificationBased”,这意味着它将使用共同定位的缓存执行轮询检查,以检查每300秒(pollInterval)的更改。如果存在差异,则本地缓存将使自己无效,直到下一次共同定位读取。
  • 此外,本地缓存将在3000秒(ttlValue)后自动失效,这将强制刷新下一个共同定位的缓存读取。

在角色缓存设置中,我有以下配置:

Role Cache Settings

  • 这与本地缓存无关。
  • 启用“通知”表示共同定位的缓存不会超时。

由于

2 个答案:

答案 0 :(得分:1)

起初我也对localCache如何使用共存缓存感到困惑。但是当我意识到localCache只需要专用缓存时,当你有单独的缓存服务器时。在这种情况下,localCache减少了缓存暂停时间,因为它也存储在所有实例内存中,并且只是通过通知进行同步。

如果使用共存缓存,缓存已存储在实例内存中,因此它已经是localCache。它在所有实例之间自动同步。

类似,如果您有多个专用缓存角色,则不必在它们之间同步数据。

完全确定我已经使用Azure Emulator进行了简单的测试。我用两个实例开始了它。并在第一个实例中添加了对象缓存,然后检查它是否存在于第二个实例,它就在那里。

答案 1 :(得分:1)

将本地缓存视为仅适用于客户端的内容。这将为您提供清晰的视角。您正在经常/最近使用的对象的客户端维护本地副本。 客户端可以在任何地方 - onPremise,天蓝色,甚至在不同的部署中。 在通知间隔中提到的每个x时间间隔中,它将轮询服务器或主缓存,并查看是否有任何通知可用于本地缓存中的对象 是的,ttl值是刷新本地缓存的时间