关于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才有意义。

时间: 2024-11-05 13:30:30

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

web.xml 配置中classpath: 与classpath*:的区别

引用一篇很不错的文章:http://blog.csdn.net/wxwzy738/article/details/16983935 首先 classpath是指 WEB-INF文件夹下的classes目录 classpath 和 classpath* 区别: classpath:只会到你指定的class路径中查找文件; classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. 举个简单的例子,在我的web.xml中是这么定义的:classpath*:META-

web.xml 配置中 classpath: 与 classpath*: 的区别

概念解释及使用场景: classpath是指WEB-INF文件夹下的classes目录. 通常我们一般使用这种写法实在web.xml中,比如spring加载bean的上下文时,如下代码: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://j

4、Maven的配置中mirror和repository的区别与联系

1.Repository(仓库) 1.1 Maven仓库主要有2种: remote repository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问 local repository:存放在本地磁盘的一个文件夹,例如,windows上默认是C:\Users\{用户名}\.m2\repository目录 1.2 Remote Repository主要有3种: 中央仓库:http://repo1.maven.org/maven2/ 私服:内网自建的maven repository,

web.xml 配置中classpath: 与classpath*:的区别——(十一)

首先 classpath是指 WEB-INF文件夹下的classes目录 解释classes含义: 1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml 2.存放模板文件 eg.actionerror.ftl 3.存放class文件 对应的是项目开发时的src目录编译文件 总结:这是一个定位资源的入口 classpath 和 classpath* 区别: classpath:只会到你的class路径中查找找文件; classpat

spring配置中classpath: 与classpath*:的区别

classpath和classpath*区别:  classpath:只会到你的class路径中查找找文件. classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. 注意: 用classpath*:需要遍历所有的classpath,所以加载速度是很慢的:因此,在规划的时候,应该尽可能规划好资源文件所在的路径,尽量避免使用classpath*. classpath*的使用: 当项目中有多个classpath路径,并同时加载多个classpath路径下(此种情况

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

今天发现开发项目启动时有警告提示:cache 'xx' is set to eternal but also has TTL/TTI set,发现是ehcache缓存设置冲突 所以决定在此mark一下,加深记忆,具体如下: timeToLiveSeconds : 缓存自创建之时起至失效时的间隔时间单位为秒,默认为0,代表无限长,即缓存永不过期: timeToIdleSeconds : 缓存创建以后,最后一次访问缓存之时至失效之时的时间间隔,单位为秒,默认为0,永不过期: eternal : 缓存

转Spring+Hibernate+EHcache配置(三)

配置每一项的详细作用不再详细解释,有兴趣的请google下 ,这里需要注意一点defaultCache标签定义了一个默认的Cache,这个Cache是不能删除的,否则会抛出No default cache is configured异常.另外,由于使用拦截器来刷新Cache内容,因此在定义cache生命周期时可以定义较大的数值,timeToIdleSeconds="300000" timeToLiveSeconds="600000",好像还不够大? 然后,在将Cac

Ehcache配置详解及CacheManager使用

<?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false" <ehcache&

mybatis(4)_二级缓存深入_使用第三方ehcache配置二级缓存

增删改对二级缓存的影响 1.增删改也会清空二级缓存 2.对于二级缓存的清空实质上是对value清空为null,key依然存在,并非将Entry<k,v>删除 3.从DB中进行select查询的条件是: 1.缓存中根本不存在这个key 2.存在key对应的Entry,但是value为null 二级缓存的配置 <cache eviction="FIFO" flushInterval="60000" size="512" readOn