如何区分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。