如何区分ehcache中的生存时间和空闲时间

时间:2010-04-06 08:08:38

标签: java ehcache

ehache上的文档说:

timeToIdleSeconds: Sets the time to idle for an element before it expires.
i.e. The maximum amount of time between accesses before an element expires

timeToLiveSeconds: Sets the time to live for an element before it expires.
i.e. The maximum time between creation time and when an element expires.

我理解 timeToIdleSeconds

但这是否意味着在创作之后&首次访问缓存项目时, timeToLiveSeconds 不再适用了?

3 个答案:

答案 0 :(得分:144)

timeToIdleSeconds允许缓存对象在短于timeToIdleSeconds的时间段内保留。 timeToLiveSeconds将使缓存的对象在多秒后失效,无论多少次或何时被请求。

我们说timeToIdleSeconds = 3。如果4秒钟内没有请求对象,则该对象将失效。

如果timeToLiveSeconds = 90,那么该对象将在90秒后从缓存中删除,即使它在其短暂生命的第90秒中被请求了几毫秒。

答案 1 :(得分:37)

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

ttlExpiry = creationTime + timeToLive
ttiExpiry = mostRecentTime + timeToIdle

完整源代码here

答案 2 :(得分:22)

来自old 1.1 documentation(在Google缓存中提供,比当前文档AFAIK更易于浏览和提供更多信息):

  

<强> timeToIdleSeconds

     

这是一个可选属性。

     

合法值是介于0和Integer.MAX_VALUE之间的整数。

     

这是元素应该生存的秒数   最后使用。使用的意思是插入或访问。

     

0具有特殊含义,不检查Element的时间   闲着,即它会永远闲着。

     

默认值为0.

     

<强> timeToLiveSeconds

     

这是一个可选属性。

     

合法值是介于0和Integer.MAX_VALUE之间的整数。

     

这是元素应该生存的秒数   创建。创建的均值使用Cache.put插入到缓存中   方法

     

0具有特殊含义,不检查Element的时间   活着,即永远活着。

     

默认值为0.