缓存中的Ehcache元素生存期

时间:2011-11-10 14:23:45

标签: spring caching ehcache

以下列方式制作Spring服务的图像:

+--------+           +---------+             +---------+
|Backend | --------- | My      | ----------- | Clients |
|service |           | service |             |         |
+--------+           +---------+             +---------+

为了不向后端发出太多请求,我使用了Ehcache。 想象一下,我的服务是一个体育门户,我缓存结果,以便当客户端请求它们时,我返回缓存,如果没有缓存,我从后端获取信息,将其放入缓存,然后将其返回到客户端。

现在,如果我设置了这些参数

long timeToLiveSeconds
long timeToIdleSeconds

并且客户端经常提出请求,timeToIdleSeconds将不会过期,但timeToLiveSeconds无论如何都将过期,并且该元素将从我放置的缓存中删除,对?

2 个答案:

答案 0 :(得分:4)

是的,你是对的。

例如:

timeToIdleSeconds = 30:如果在30秒内没有请求缓存的对象,则expires =>最后访问时间计数

timeToLiveSeconds = 60:60秒后缓存的对象将过期 - 无论请求或请求的频率是多少=>创造时间计数

来自文档(旧版本1.4):

  

timeToIdleSeconds:   设置元素到期前的空闲时间。   即元素到期之前访问之间的最长时间   仅在元素不是永恒时使用。   可选属性。值为0表示Element可以为无穷大空闲。   默认值为0.

     

timeToLiveSeconds:   设置元素到期前的生存时间。   即创建时间与元素到期之间的最长时间。   仅在元素不是永恒时使用。   可选属性。值为0意味着元素可以为无限生存。   默认值为0.

答案 1 :(得分:0)

如果同时设置两者,expirationTime将为Math.min(ttlExpiry, ttiExpiry),其中

ttlExpiry = creationTime + timeToLive
ttiExpiry = mostRecentTime + timeToIdle

完整源代码here