CacheManager ehCacheManager = new CacheManager();
ehCacheManager.addCache("default");
Ehcache cache = ehCacheManager.getCache("default");
Element e = new Element("aa", "aa", false, 1, 1);
cache.put(e);
System.out.println(cache.get("aa"));
Thread.sleep(1050);
System.out.println(cache.get("aa"));//如果这个时候,期待cache是否过期。但是实际的情况是。ehcache依然能获取到相关数据.
当你去调用ehcache.put动作时,会调用applyDefaultsToElementWithoutLifespanSet(element);
方法内容:
if (!element.isLifespanSet()) {
//Setting with Cache defaults
element.setTimeToLive((int) configuration.getTimeToLiveSeconds());
element.setTimeToIdle((int) configuration.getTimeToIdleSeconds());
element.setEternal(configuration.isEternal());
}
Element里面有一个isLifespan的参数,默认是为false的。。
false的时候.Ehcache会element的过期时间设置为默认配置的
当你通过new Element(Object key, Object value,
boolean eternal, int timeToIdleSeconds, int timeToLiveSeconds)
去实例化的时候。。根本不会去设置isLifespan这个参数,而是采用默认的过期策略的。。
但是去调用element 的。setTimeToLive,setTimeToIdle,setEternal方法时,
确会去设置这个参数。。
Element.setEternal(boolean eternal) {
this.eternal = eternal;
lifespanSet = true;
}
这样的话。。就会去单独去设置Element控制过期时间,而不会用默认的配置去覆盖设置.
个人觉得这个ehcache存在的一个BUG。。
既然在调用element 的。setTimeToLive,setTimeToIdle,setEternal方法时,会去设置这个参数,那么如果在构造的时候也应该调用这些方法。
但是有可能ehcache希望用户能根据不同cache config去配置应用。而不应该应用到element级别上
分享到:
相关推荐
在Java应用中,尤其是在Spring框架中,Ehcache常被用作二级缓存,以提升数据访问速度。下面我们将深入探讨Ehcache的二级缓存配置及其核心概念。 **1. Ehcache的核心组件** - **Cache**: 缓存是Ehcache的基本单元,...
在 Hibernate 中,Ehcache 可以作为二级缓存提供服务,将查询结果存储在缓存中,避免重复查询数据库。只需在 Hibernate 配置文件中指定 Ehcache 作为二级缓存提供者即可。 ## 5. Ehcache 的分布式缓存 Ehcache ...
2. **Element**: Cache中的一个条目,包含键(Key)和值(Value),还可以附加其他信息如创建时间、过期时间等。 3. **Region**: 类似于分区的概念,是EhCache中的一类Cache,方便管理多个相关的缓存。 4. **...
Ehcache最初由Tomi Tirro设计,现在是Terracotta公司的产品,是Java世界中常用的二级缓存解决方案,尤其在Spring框架中得到了广泛应用。 **Ehcache工作原理** Ehcache的核心概念包括缓存、缓存区(Cache)、缓存项...
在MyBatis中,可以通过插件机制实现EHcache的集成,配置插件并在Mapper接口上使用注解来启用缓存。 总之,EHcache是一个强大且灵活的缓存解决方案,适用于各种Java应用程序。正确地集成和配置EHcache,能够显著提升...
Ehcache 是一款广泛使用的 Java 缓存框架,它的核心功能是提高应用程序的性能和响应速度,通过将频繁访问的数据存储在内存中,避免了反复从数据库或其他慢速存储介质中读取数据。本教程将深入讲解 Ehcache 的基本...
5. **过期策略**:Ehcache提供了多种过期策略,如时间过期、访问过期等,以控制缓存项的生命周期。 **ehcache-1.2.2.jar.license.txt** 这个文件很可能是Ehcache 1.2.2版的许可协议,详细规定了用户可以如何使用、...
此外,Ehcache还支持二级缓存,当一级缓存满时,数据会自动存入二级缓存(如硬盘)。 总结来说,Ehcache是一个强大的Java缓存解决方案,它简化了缓存的管理和使用。通过合理的配置和使用,我们可以显著提高应用程序...
4. **缓存过期**:Ehcache支持基于时间、基于访问次数或无限制的过期策略,以控制元素的生命周期。 5. **缓存预热**:启动时加载常用数据到缓存,以提高初次使用时的响应速度。 6. **分布式缓存**:Ehcache通过...
Ehcache是一款开源、高性能、轻量级的Java缓存框架,广泛应用于各种Java应用程序中,以提高数据访问速度并降低数据库负载。它的核心特性包括内存缓存、磁盘存储和分布式缓存,使得在大数据量下也能保持高效的性能。 ...
- **元素(Element)**:在Ehcache中,数据以键值对的形式存在,称为缓存元素。 - **缓存区域(Cache)**:多个相关的元素可以组织在一起,形成一个逻辑上的缓存区域。 2. **Ehcache-1.2.3的功能特性** - **内存和...
这段配置定义了一个名为`myCache`的缓存,设置了最大本地堆大小、非永久性(会过期)以及过期时间。 然后,在Spring的主配置文件中,如`applicationContext.xml`,我们需要导入Ehcache的配置,并声明一个...
Ehcache支持两种过期策略:Time To Idle(TTI,空闲时间)和Time To Live(TTL,生存时间)。当缓存项超过设定的空闲时间或生存时间,将自动清除。此外,可以通过监听器或者手动调用`remove`方法来清理特定的缓存项...
- 超时机制:可以设置缓存项的存活时间和过期时间,以控制缓存的生命周期。 - 可扩展性:允许通过插件进行扩展,如添加缓存同步策略、缓存预热等。 - 高可用性:支持备份和故障转移,确保服务不间断。 3. ...
每个Element都有一个唯一的键和对应的值,还有过期时间和状态信息。 4. **缓存策略**:Ehcache支持多种缓存策略,包括LRU(最近最少使用)、LFU(最不经常使用)和FIFO(先进先出)。这些策略用于决定当缓存达到其...
例如,在示例中提供的配置文件中定义了一个名为 `WlanCache` 的缓存,其中设置了缓存在内存中的最大元素数量、是否永久有效、空闲时间以及过期时间等属性。 ```xml <ehcache name="WlanCache"> </ehcache> ``` ...
2. **配置Ehcache**: 在项目中创建`ehcache.xml`配置文件,定义缓存的属性,如缓存的大小、存活时间和过期时间。例如: ```xml maxEntriesLocalHeap="10000" eternal="false" timeToIdleSeconds="120" ...
- **缓存雪崩**:大量缓存同时过期,导致短时间内所有请求都落到数据库上,EhCache可以通过设置合理的过期时间和分布锁避免。 7. **缓存更新与同步**: - **监听器**:EhCache支持缓存事件监听,如添加、更新、...
- **缓存策略**:Ehcache支持多种缓存策略,如LRU(最近最少使用)、LFU(最不经常使用)和时间过期,可以根据需求选择合适的策略。 - **缓存监听器**:可以通过注册缓存监听器来监控缓存事件,如添加、更新或移除...
如果设置为`true`,则不会因为过期时间而被移除,这里设置为`false`。 - `timeToIdleSeconds`/`timeToLiveSeconds`:分别表示缓存项空闲多少秒后失效(即不再被访问)和缓存项生存多少秒后失效。两者都设置为120秒...