2014-02-06 42 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