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

Ehache上的文档说:

timeToIdleSeconds: Sets the time to idle for an element before it expires. ie The maximum amount of time between accesses before an element expires timeToLiveSeconds: Sets the time to live for an element before it expires. ie The maximum time between creation time and when an element expires. 

我明白timeToIdleSeconds

但这是否意味着在创build并首次访问caching项后, timeToLiveSeconds不再适用了?

timeToIdleSeconds使caching的对象保持在只要它比timeToIdleSeconds更短的时间内被请求。 timeToLiveSeconds将使caching的对象无论多less次或什么时候被请求,都会在几秒钟后失效。

假设timeToIdleSeconds = 3 。 然后,如果4秒内没有被请求,则该对象将被无效。

如果timeToLiveSeconds = 90 ,那么90秒钟之后对象将被从caching中移除,即使在其短暂90秒内已被请求了几个毫秒。

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

 ttlExpiry = creationTime + timeToLive ttiExpiry = mostRecentTime + timeToIdle 

完整的源代码在这里 。

从以前的1.1版文档 (可在Google Cache中获得,比现在的文档AFAIK更容易浏览和提供更多信息):

timeToIdleSeconds

这是一个可选属性。

合法值是0到Integer.MAX_VALUE之间的整数。

这是元素自上次使用以来应该存活的秒数。 使用手段插入或访问。

0有一个特殊的含义,那就是不检查元素是否有空闲的时间,也就是说它会永远闲置。

默认值是0。

timeToLiveSeconds

这是一个可选属性。

合法值是0到Integer.MAX_VALUE之间的整数。

这是元素自创build以来应该存活的秒数。 创build意味着使用Cache.put方法插入到caching中。

0有一个特殊的含义,那就是不检查元素的生存时间,即它将永远活着。

默认值是0。