关于ehcache配置中timeToLiveSeconds和timeToIdleSeconds的区别

Posted sprinkle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于ehcache配置中timeToLiveSeconds和timeToIdleSeconds的区别相关的知识,希望对你有一定的参考价值。

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

 

以上是关于关于ehcache配置中timeToLiveSeconds和timeToIdleSeconds的区别的主要内容,如果未能解决你的问题,请参考以下文章

Spring Ehcache中@Cacheable不起作用。

springboot+mybatis+ehcache实现缓存数据

spring boot学习(十三)SpringBoot缓存(EhCache 2.x 篇)

第一章:关于Ehcache

关于ehcache缓存中eternal及timeToLiveSeconds和timeToIdleSeconds的说明

Ehcache 和 CacheWriter (write-behind) 关系