当一个项目被放入缓存时,它会分配一个超时(通过调用Put()显式,或者从缓存配置中隐含)。我想更新/重置我检索的每个项目的到期时间[调用Get()on]。
我是否需要明确地放置/更新该项目,或者到期时间是否会自动更新为Now + timeout?
== UPDATE ==
看起来意图应该调用ResetObjectTimeout() method。我没有在文档中提及过期更新逻辑。
==更新2 ==
在快速测试/实验中,ResetObjectTimeout()生成的网络流量与使用Put()一样多,因此似乎整个条目都是通过网络传送的,只是为了更新超时。我尝试使用每个项目的不同数据量,尽管我没有添加任何新项目,但流量水平确实随着数据量的增加而上升。
我想更新超时的原因是我希望缓存项在上次使用后的N分钟内保留在缓存中。我希望这是一种非常常见的使用模式,为了实现它,我需要在每次获取操作时通过网络重新发送所有数据,这大大降低了使用缓存的好处,例如:限制可扩展性和性能。
答案 0 :(得分:0)
不,因为appfabric中的所有超时都是绝对的。
正如您所发现的,Data.Cache中有一个用于重置超时的方法(实际上它允许您在不获取数据的情况下应用新的超时,而不是实际上休息)。
根据您的情况,Read-Through和Write-Behind可以帮助您查看here