在使用ehcache框架時,timeToLiveSeconds和timeToIdleSeconds這兩個屬性容易混淆。(當然,只有在eternal爲false時,這2個屬性纔有效)
- timeToLiveSeconds -->當對象自從被存放到緩存中後,如果處於緩存中的時間超過了 timeToLiveSeconds屬性值,這個對象就會過期,EHCache將把它從緩存中清除;即緩存自創建日期起能夠存活的最長時間,單位爲秒(s)
- timeToIdleSeconds --> 當對象自從最近一次被訪問後,如果處於空閒狀態的時間超過了timeToIdleSeconds屬性值,這個對象就會過期,EHCache將把它從緩存中清空;即緩存被創建後,最後一次訪問時間到緩存失效之時,兩者之間的間隔,單位爲秒(s)
配置如下:
timeToIdleSeconds=60
timeToLiveSeconds=180
則一個數據被添加進緩存後,該數據能夠在緩存中存活的最長時間爲180秒(timeToLiveSeconds),而在180秒內,假設不止一次去緩存中拿取該數據,那麼相鄰2次獲取數據的時間間隔如果小於60秒(timeToIdleSeconds),則能成功獲取到數據,但如果最近一次獲取到下一次獲取的時間間隔超過60秒,那麼,將得到null,因爲此時該數據已經被移出緩存了。
而且,timeToLiveSeconds必須大於timeToIdleSeconds纔有意義。