本地缓存和不可变对象 - 零超时

时间:2014-10-27 15:04:31

标签: azure appfabric appfabric-cache azure-appfabric azure-in-role-cache

Local Cache上使用基于通知的失效时,ttlValue超时仍会使缓存项无效,从而在下一次请求时强制从缓存群集中获取。

例如,在下面的配置中,项目将在300秒后超时,但也会每隔60秒检查群集上的失效通知(例如,如果它们被删除):

<dataCacheClient name="default">
  <localCache isEnabled="true" sync="NotificationBased" objectCount="100000" ttlValue="300" />
  <clientNotification pollInterval="60" />
</dataCacheClient>

问题:

我有一组 不可变 的对象 - 即它们不会改变。这意味着他们永远不需要基于超时的失效来“刷新”自己。

这实质上意味着不必要地从本地缓存中删除不可变对象。如果这些项目很多,则可能会出现明显的性能下降,尤其是需要读取数千个项目时。

DataCacheLocalCacheProperties构造函数中将其设置为零时,出现以下异常:

An exception of type 'System.ArgumentException' occurred in Microsoft.ApplicationServer.Caching.Client.dll but was not handled in user code

Additional information: Time-out should be a positive value.

另一个选项我必须设置一个无法访问的号码。

为什么我们不允许本地缓存的超时为零?

我正在使用Azure角色内缓存(colocated)。

1 个答案:

答案 0 :(得分:0)

您不能指定零作为ttlValue,因为这意味着项目永远不会被缓存。

那么你的问题真的是&#34;为什么使用零作为ttlValue没有用作特殊情况来表明项目永远不会失效?&#34;这只能由微软回答。

如果您将ttlValue设置为int.MaxValue,则这些项目将在68年内无效,这应该足够长。

相关问题