gpt4 book ai didi

azure - 本地缓存和不可变对象(immutable对象) - 零超时

转载 作者:行者123 更新时间:2023-12-03 00:33:10 25 4
gpt4 key购买 nike

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

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

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

问题:

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

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

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 角色内缓存(并置)。

最佳答案

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

那么您的问题实际上是“为什么使用零作为 ttlValue 而不用作特殊情况来指示项目永远不应该失效?”这只能由微软来回答。

如果将ttlValue设置为int.MaxValue,那么这些项目将在68年内不会失效,这应该足够长了。

关于azure - 本地缓存和不可变对象(immutable对象) - 零超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26590540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com