0

以下是中的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. 我对此仍然有些困惑。

请有人在下面验证我的假设:

  • 除了 colocated 缓存之外,缓存项将存储在每个角色的本地 RAM (localCache) 中,以提高缓存读取性能。
  • 此本地缓存是“基于通知的”,这意味着它将对同位缓存执行轮询检查,以每 300 秒检查一次更改 ( pollInterval)。如果存在差异,则本地缓存将使其自身失效,直到下一次同地读取。
  • 此外,本地缓存将在 3000 秒 ( ttlValue) 后自行失效,这将在下一次同地缓存读取时强制刷新。

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

角色缓存设置

  • 这与本地缓存无关。
  • 启用“通知”意味着托管缓存不会超时。

谢谢

4

2 回答 2

1

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

于 2014-07-09T20:56:28.973 回答
1

起初,我也对 localCache 如何与协同定位缓存一起工作感到有些困惑。但是当我意识到 localCache 仅用于专用缓存时,当您有单独的缓存服务器时。在这种情况下,localCache 减少了缓存响应时间,因为它也存储在所有实例内存中,并且只是通过通知同步。

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

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

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

于 2014-07-09T12:23:04.030 回答