在使用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才有意義。