1.ehcahce简介
在开发高并发量,高性能的网站应用系统时,缓存Cache起到了非常重要的作用。
EHCache是来自sourceforge(http://ehcache.sourceforge.net/)的开源项目,也是
纯Java实现的简单、快速的Cache组件。EHCache支持
内存和磁盘的缓存,支持
LRU、LFU和FIFO多种淘汰算法,支持
分布式的Cache,可以作为Hibernate的缓存插件,是Hibernate中默认的CacheProvider。同时它也能提供基于Filter的Cache,该Filter可以缓存响应的内容并采用Gzip压缩提高响应速度。
Ehcache缓存的特点:
1. 快速.
2. 简单.
3. 多种缓存策略
4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题
5. 缓存数据会在虚拟机重启的过程中写入磁盘
6. 可以通过RMI、可插入API等方式进行分布式缓存
7. 具有缓存和缓存管理器的侦听接口
8. 支持多缓存管理器实例,以及一个实例的多个缓存区域
9. 提供Hibernate的缓存实现
2.Ehcache缓存- 解读Ehcache配置文件ehcache.xml
缓存的配置有很多选项,主要集中在ehcache.xml里。比如缓存的名称,监听器等。Ehcache提供了默认的配置文件。同时可以自己指定缓存,比如
<diskStore path="D:/work2/renhewww/cache"/>
<cache name=" sampleCache1"
maxElementsInMemory="1"
maxElementsOnDisk="10000"
eternal="false"
overflowToDisk="true"
diskSpoolBufferSizeMB="20"
diskPersistent="true"
timeToIdleSeconds="43200"
timeToLiveSeconds="86400"
memoryStoreEvictionPolicy="LFU"
/>
各配置参数的含义:
name:Cache的唯一标识
maxElementsInMemory:缓存中允许创建的最大对象数
eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。
timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前,两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是 0 就意味着元素可以停顿无穷长的时间。
timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。
overflowToDisk:内存不足时,是否启用磁盘缓存。
memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。LRU和FIFO算法这里就不做介绍。LFU算法直接淘汰使用比较少的对象,在内存保留的都是一些经常访问的对象。对于大部分网站项目,该算法比较适用。
如果应用需要配置多个不同命名并采用不同参数的Cache,可以相应修改配置文件,增加需要的Cache配置即可。
3.Ehcache缓存的使用
3.1 安装ehcache
Ehcache 的特点,是一个纯Java ,过程中(也可以理解成插入式)缓存实现,单独安装Ehcache ,需把ehcache-X.X.jar 和相关类库方到classpath中。如项目已安装了Hibernate ,则不需要做什么,直接可以使用Ehcache 。
如果使用maven,可以在pom.xml里配置:
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.9.0</version>
</dependency>
3.2 生成CacheManager
使用CacheManager 创建并管理Cache大概步骤为:
第一步:生成CacheManager对象
第二步:生成Cache对象
第三步:向Cache对象里添加由key,value组成的键值对的Element元素
第四步:关闭CacheManager。
1.创建CacheManager有4种方式:
方式一:使用默认配置文件创建
Ehcache有默认的配置文件ehcache.xml,里面有默认的配置和一个默认的缓存。
CacheManager manager = CacheManager.create();
方式二:使用指定配置文件创建
CacheManager manager = CacheManager.create("src/config/ehcache.xml");
方式三:从classpath中找寻配置文件并创建
URL url = getClass().getResource("/anothername.xml");
CacheManager manager = CacheManager.create(url);
方式四:通过输入流创建
InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath());
try
{
manager = CacheManager.create(fis);
}
finally
{
if (fis != null)
{
fis.close();
}
}
// 使用manager
移除指定名称的Cache对象
manager.removeCache("demoCache");
可以通过调用manager.removalAll()来移除所有的Cache。
2 创建Cache
通过CacheManager创建Cache:
Cache cache = manager.getCache("sampleCache1");
3 利用cache存取数据
存储数据
Element element = new Element("key1", "value1");
cache.put(new Element(element);
获取数据
Element element = cache.get("key1");
/
/从Cache中
移除一个元素
cache.remove("key");
注意:可以直接使用上面的API进行数据对象的缓存,这里需要注意的是对于缓存的对象都是必须可序列化的。
4.缓存的关闭
manager.shutdown();
3.3 实例
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
public class Ehcache
{
public static void main(String[] args)
{
CacheManager manager = CacheManager.create("src/main/resources/conf/ehcache.xml");
Cache cache = manager.getCache("sampleCache1");
Element element = new Element("key","value");
cache.put(element);
System.out.println(cache.get("key"));
manager.shutdown();
}
输出:
[ key = key, value=value, version=1, hitCount=1, CreationTime = 1414933551601, LastAccessTime = 1414933551601 ]
参考:
http://sishuok.com/forum/posts/list/315.html
http://blog.sina.com.cn/s/blog_46d5caa40100ka9z.html
分享到:
相关推荐
### EHCache API的基本用法 #### 一、EHCache简介 EHCache 是一款开源的 ...综上所述,EHCache 提供了一套完整且强大的缓存解决方案,通过合理配置和正确使用其提供的 API,可以极大地提高应用程序的性能和响应速度。
首先,Ehcache是由Talend公司维护的一个开源缓存库,它支持内存和磁盘存储,具有丰富的API和特性,包括缓存分区、过期策略、缓存预热等。在Spring Boot 2中,我们可以通过Spring Data Cache抽象来轻松地与Ehcache...
<version>5.1.0.Alpha1</version> </dependency> ``` - **Hibernate Commons Annotations:** ``` <dependency> <groupId>org.hibernate.common</groupId> <artifactId>hibernate-commons-annotations</...
3. **缓存淘汰策略**: Ehcache提供了多种缓存淘汰策略,如LRU(Least Recently Used)最近最少使用、LFU(Least Frequently Used)最不经常使用和FIFO(First In First Out)先进先出等。这些策略用于决定当内存空间...
<artifactId>ehcache-core</artifactId> <version>2.1.0</version> </dependency> ``` 2. **创建ehcache.xml**:在src/main/resources目录下创建ehcache.xml配置文件。 ```xml <ehcache> <diskStore path=...
总的来说,这个"ehcache例子"提供了一个基础的Ehcache使用框架,通过Eclipse导入并运行,可以帮助开发者快速理解和实践Ehcache的基本功能。通过深入研究和调整配置,你可以更好地利用Ehcache来优化你的Java应用。
<artifactId>shiro-ehcache</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.3.2</version> </...
private Map<K, V> ehcacheMap = new ConcurrentHashMap<>(); public void put(K key, V value) { ehcacheMap.put(key, value); } public V get(K key) { return ehcacheMap.get(key); } public void ...
Ehcache是一款高性能、广泛使用的Java缓存框架,它的API为开发者提供了丰富的功能,以便在应用程序中实现高效的数据缓存...Ehcache API的apidocs文件提供了详细的接口说明和示例,是学习和使用Ehcache的重要参考资料。
### 分布式缓存架构与Ehcache集群详解 ...以上内容详细介绍了Ehcache的基本概念、特点以及如何在实际项目中进行配置和使用。对于希望提升应用性能和优化资源使用的开发者而言,Ehcache无疑是一个非常实用的工具。
#### 二、Ehcache简介 - **定义**:Ehcache是一种高性能、轻量级的缓存解决方案,广泛应用于Java应用中。它可以实现读写缓存(read/write cache)和只读缓存(read-only cache),并且支持内存缓存和磁盘缓存。 - **特点...
<artifactId>ehcache</artifactId> </dependency> ``` 2. **配置EhCache**:可以通过`ehcache.xml`文件或Java配置类来配置EhCache。 ```xml <!-- ehcache.xml 示例 --> <ehcache xmlns:xsi=...
**Ehcache简介** Ehcache是一款开源的Java缓存框架,它被广泛应用于提高应用...掌握其基本API和配置方法是使用Ehcache的关键。通过`Ehcache_Hello`案例,开发者可以逐步学习和实践,从而熟练运用Ehcache进行缓存管理。
**Ehcache 知识详解** ...在实际开发中,熟练掌握 Ehcache 的使用和配置,能有效提升系统的响应速度和整体性能。同时,对源码的深入理解有助于解决复杂的缓存问题,为项目带来更高的可扩展性和稳定性。
本文档覆盖了EHCache的基本原理、配置方法、API使用、缓存策略以及与其他框架(如Spring)的整合。 20.3 读者对象 适合对Java开发有一定基础,需要理解和使用缓存技术的开发人员,尤其是对EHCache感兴趣或者已经在...
<artifactId>shiro-ehcache</artifactId> <version>1.2.1</version> </dependency> ``` 其中,`shiro-web`提供了Web应用所需的核心功能;`shiro-spring`则支持Spring框架与Shiro的集成;`shiro-ehcache`则用于...
一、Ehcache基本概念 1. 缓存:缓存是一种在主存储器和辅助存储器之间进行数据快速交换的技术。Ehcache将经常访问的数据保存在内存中,从而缩短数据获取时间。 2. 缓存层:Ehcache支持多级缓存,包括内存和磁盘...
<artifactId>hibernate-ehcache</artifactId> </dependency> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.x.x</version> <!-- 使用对应版本 --> </...
这个jar提供Web相关的过滤器(如`RememberMeFilter`, `LoginFilter`等)和Servlet API的集成,使得在Web环境中可以方便地使用Shiro进行安全控制。 3. **Apache Shiro Realm**: Shiro通过Realm与应用程序的数据源...
例如,`<cache>`标签用于定义一个缓存,`<diskStore>`用于配置磁盘存储,`<defaultCache>`定义默认缓存配置。 4. **内存与磁盘存储**: - **内存缓存**:EhCache首先将数据存储在内存中,提供高速访问。当内存达到...