2014-02-06 43 views
0

全部,兵马俑timeToIdleSeconds verse timeToLiveSeconds

这是我对这两个元素的理解,我想澄清一下。

timeToIdleSeconds =如果一个对象闲置超过X秒,将被驱逐。

从技术文档

如果客户访问在myCache的元件已经空闲了一个多小时(timeToIdleSeconds)更 ,它逐出该元素。元素 也从兵马俑服务器阵列中被逐出。

如果缓存中的对象不再被请求,它会被驱逐吗?缓存大小限制是否会清除未再次请求的此缓存对象的唯一方法?

timeToLiveSeconds =如果一个对象被缓存了超过X秒的时间,它将被逐出。这是否与timeToIdleSeconds相同?再次请求时才被驱逐出境?或者这会通过后台进程清理吗?

感谢

回答

0

为了您的最后一个问题:“?还是将得到由一个后台进程清理”

http://terracotta.org/apidocs/terracotta-toolkit/3.2.0/org/terracotta/cache/CacheConfig.html

在两个setMaxTTISeconds和setMaxTTLSeconds

具有:

“的背景驱逐线程休眠间隔是基于该值和最大TTL,所以改变该值的一个副作用是改变睡眠驱逐线程的间隔。“

我假设不同版本的兵马俑会相似;我相信会有后台线程进行清理。

如果这是正确的,那么它似乎暗示一个请求没有必要触发驱逐,这与您引用的文档有点相反。

+0

基于我的测试,似乎TTL是这样工作的。后台线程(DGC)根据TTL清除缓存中的旧对象。闲置时间(TTI)似乎没有被后台进程清除。我看到缓存已经满了,永远不会退缩。对象被驱逐以为新对象腾出空间,但最大缓存大小仍然满。 – user3277840