2

当一个项目被放入缓存时,它会分配一个超时时间(通过对 Put() 的调用显式,或者从缓存配置中隐含)。我想更新/重置我检索到的每个项目的到期时间 [call Get() on]。

我是否需要明确放置/更新项目或到期时间会自动更新为现在 + 超时?

==更新==

看起来意图是应该调用ResetObjectTimeout() 方法。我在文档中没有看到其他关于过期更新逻辑的提及。

==更新 2==

在快速测试/实验中,ResetObjectTimeout() 生成的网络流量与使用 Put() 一样多,因此似乎整个条目都通过网络传输只是为了更新超时。我尝试了每个项目不同数量的数据,尽管事实上我没有添加任何新项目,但流量水平确实随着数据量的增加而上升。

我想更新超时的原因是我希望缓存项在上次使用后在缓存中保留 N 分钟。我预计这将是一种非常常见的使用模式,并且要实现它,我需要在每次获取操作时通过网络重新发送所有数据,这大大降低了使用缓存的好处,例如限制可伸缩性和性能。

4

1 回答 1

0

不,因为 appfabric 中的所有超时都是绝对的。

正如您所发现的,Data.Cache 中有一个用于重置超时的方法(实际上它允许您在不获取数据的情况下应用新的超时,而不是实际上休息)。

根据您的情况,Read-Through 和 Write-Behind 可以帮助您查看这里

于 2012-12-18T08:42:50.267 回答