2011-11-10 47 views
4

图片制作一个Spring服务,以下列方式:的Ehcache元件使用寿命缓存

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

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

,如果我有这些参数设置

long timeToLiveSeconds 
long timeToIdleSeconds 

和客户端发出请求过于频繁,则timeToIdleSeconds不会过期,但timeToLiveSeconds无论如何都会到期,元素会从缓存中被移除我已经说过了,对吧?

回答

4

是的,你是对的。

例如:

timeToIdleSeconds = 30:如果30秒内未请求缓存的对象,它过期=>上次访问时间计算

timeToLiveSeconds = 60:60秒后缓存对象将过期 - 不管如何往往被要求或根本=>创建时间要求计算

从文档(旧版本1.4):

timeToIdleSeconds: 设置元素到期前的空闲时间。 即元素到期之前访问之间的最大时间间隔 仅当元素不是永恒时才使用。 可选属性。值为0意味着元素可以空闲无限。 默认值为0.

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

0

在同时设置的情况下,expirationTimeMath.min(ttlExpiry, ttiExpiry),其中

ttlExpiry = creationTime + timeToLive 
ttiExpiry = mostRecentTime + timeToIdle 

完整的源代码here