首先说下Cache各个配置项的意义
maxElementsInMemory : 允许内存中最大的元素个数
overflowToDisk : 当元素的数量超过maxElementsInMemory的值时,是否允许存储到磁盘
diskPersistent : 是否允许数据持久化到内存,如果是,即JVM重启缓存中的数据仍然有效,该设置影响性能,大概减低8倍性能
diskExpiryThreadIntervalSeconds : 磁盘中数据过期检查线程的轮询时间间隔
memoryStoreEvictionPolicy : 内存中数据元素的管理策略,当元素的数量超过maxElementsInMemory的值时,将触发该策略把内存中的元素移出,有:LFU:最近最少使用的元素先移出;FIFO:最先进入的元素被移出;LRU:使用越少的元素被移出
eternal : true时表示缓存中的数据永远不会过期;false时表示缓存中的数据会过期,过期的依据需要根据timeToIdleSeconds 和 timeToLiveSeconds 的值
timeToIdleSeconds : 允许缓存中数据的最大空闲时间,即cache.get(key)最近一次被调用离现在的时间间隔如果大于该时间,即该元素会被过期expiry
timeToLiveSeconds : 允许缓存中数据的最大生存时间,0时表示无限大。cache.put(element)到现在的时间间隔如果大于该时间,即该元素被过期expiry
元素在缓存中被过期expiry,只需满足上面timeToIdleSeconds和timeToLiveSeconds任何一个条件即可
注意的是触发ehcache去检查这个元素是否过期expiry,是由用户访问了元素,即调用cache.get(key)按需触发,这时ehcache才会去检查这个元素是否过期,如果过期就把该元素清除,并返回null。所以如果存在这样的场景:有些元素我们一直都不去访问,且内存中的元素数量又没超出maxElementsInMemory的值,那么这些过期元素将一直驻留在内存中。
为了解决这个问题,我们应该创建一个后台线程,这个线程可以过一段时间去触发一下cache.evictExpiredElements(),这样即可把内存中驻留的过期元素清除。
分享到:
相关推荐
10. **性能优化**:Ehcache 3.8.1版本可能会包含性能优化,如更快的缓存查找、更高效的内存管理以及更小的资源消耗。 综上所述,Ehcache 3.8.1作为一款强大的缓存解决方案,提供了丰富的配置选项、高效的数据管理...
4. **内存与磁盘存储**: Ehcache支持将超出内存容量的缓存元素自动写入磁盘,确保缓存的持续性。这种特性称为"溢出到磁盘"。 **二、Ehcache配置与使用** 1. **配置**: Ehcache的配置文件通常为`ehcache.xml`,其中...
Ehcache提供了内存和磁盘两种存储介质,当内存不足时,部分数据会被自动移至磁盘以释放空间。 **Ehcache的API使用** 在Ehcache的使用中,我们需要了解以下几个关键API: 1. `CacheManager`: 这是Ehcache的核心...
- **内存和磁盘缓存**:Ehcache支持在内存和磁盘上同时存储元素,当内存中的缓存满时,可以将部分元素移到硬盘上。 - **自动过期**:可以通过配置指定缓存元素的生命周期,过期后自动从缓存中移除。 - **缓存更新...
Ehcache 支持多种缓存策略,如 LRU(Least Recently Used,最近最少使用)内存淘汰策略,当内存满时,会优先移除最近最少使用的元素。另外,它还可以配置为在内存不足时将数据溢写到硬盘,实现持久化存储。 在实际...
总的来说,`ehcache.xsd`和`ehcache.xml`是Ehcache在MyBatis中使用的关键配置文件,它们定义了缓存的行为和规则,使得开发者可以灵活地管理和优化缓存性能。通过合理配置这两个文件,可以有效地提升基于MyBatis的...
10. **缓存管理**:Ehcache提供API和Web管理控制台,方便开发者监控和管理缓存的性能、大小和状态。 在使用Ehcache时,开发人员需要考虑缓存的性能优化,如适当设置缓存大小、选择合适的缓存策略、合理利用缓存加载...
1. **内存管理**:Ehcache将数据存储在内存中,通过高效的内存管理机制来优化内存使用。它支持两种类型的缓存区域:临时缓存和永久缓存。临时缓存中的数据在达到预设的过期时间后会被自动清理,而永久缓存的数据则会...
1. **快速**:ehcache通过高效的内存管理和优化的算法设计,确保数据读取和写入操作迅速完成。 2. **简单**:其简洁的API和丰富的文档使ehcache易于集成和使用,即使是对缓存技术不熟悉的开发者也能快速上手。 3. **...
EHCache是一款广泛应用于Java环境中的高效、易用且功能丰富的内存缓存系统。它能够显著提升应用性能,通过将常用数据存储在内存中,避免了反复从数据库读取,降低了I/O延迟。本文将探讨EHCache的核心概念,配置方法...
1. **内存管理**:Ehcache使用LRU(Least Recently Used)策略进行内存管理,当缓存达到最大容量时,会自动移除最近最少使用的元素。 2. **磁盘存储**:除了内存,Ehcache还支持将超出内存容量的数据写入磁盘,形成...
- 缓存管理器(Cache Manager):它是Ehcache的核心,负责创建和管理多个缓存。 - 缓存(Cache):每个缓存都有一个唯一的名称,用于存储键值对。键必须是唯一的,而值可以是任何对象。 - 键(Key)与值(Value)...
首先,Ehcache的核心功能是提供内存缓存,它将频繁访问的数据存储在内存中,以便快速获取。Ehcache的源码主要分为以下几个部分: 1. **Cache Manager(缓存管理器)**:它是Ehcache的入口点,负责创建、管理和协调...
EHCache 提供了多种灵活的缓存管理方案,包括但不限于内存缓存、磁盘文件存储以及分布式存储等,使其成为 **Hibernate** 默认 CacheProvider 的首选。 #### 二、EHCache的主要特点 1. **快速轻量**:EHCache 被...
1. **缓存管理器(Cache Manager)**:这是EHcache的顶级组件,负责管理一个或多个缓存。每个应用通常只有一个缓存管理器实例。 2. **缓存(Cache)**:缓存是实际存储数据的地方,由键值对组成。可以设置过期策略、...
- **LRU(Least Recently Used)策略**:Ehcache默认使用LRU算法,当内存缓存满时,会移除最近最少使用的元素。 - **TTL(Time To Live)和TTI(Time To Idle)**:TTL定义了元素在缓存中存活的最大时间,而TTI...
- **缓存配置**:在`ehcache.xml`中,可以定义多个缓存,每个缓存都有自己的属性,如最大元素数、内存大小、磁盘存储路径等。 - **内存策略**:Ehcache支持LRU(最近最少使用)、LFU(最不经常使用)和FIFO(先进...
- **DefaultCache**: Ehcache 的默认实现,包含了缓存的内存和磁盘存储管理。 - **MemoryStore**: 负责在 JVM 内存中存储元素的类。 - **DiskStore**: 处理磁盘存储的类,当内存不足时,将数据持久化到硬盘。 - *...
- `maxElementsInMemory`: 缓存中最大内存元素数量。 - `eternal`: 是否永不过期,如果为false,则需要设置`timeToIdleSeconds`和`timeToLiveSeconds`。 - `timeToIdleSeconds`: 元素未被访问后多久失效。 - `...
2. **配置hostName**: 修改`ehcache.xml`,将`<terracottaConfig>`元素中的`hostName`替换为服务器的实际IP地址,确保所有服务器都能连接到同一 Terracotta Server。例如: ```xml ,server2-ip:9510"> ... ```...