一、EHCache主要特性
1. 快速.
2. 简单.
3. 多种缓存策略
4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题
5. 缓存数据会在虚拟机重启的过程中写入磁盘
6. 可以通过RMI、可插入API等方式进行分布式缓存
7. 具有缓存和缓存管理器的侦听接口
8. 支持多缓存管理器实例,以及一个实例的多个缓存区域
9. 提供Hibernate的缓存实现
二、EHCache使用步骤
hibernate中默认使用EHCache缓存框架,所以如果使用hibernate的时候可以直接使用EHCache。
1.创建cacheManager:
CacheManager manager = CacheManager.create();
cacheManager有多重创建方式,上面这种是使用了EHCache的默认参数。
2.创建cache并加入CacheManager:
Cache cache = new Cache(name, maxElementsInMemory, overflowToDisk, eternal, timeToLiveSeconds, timeToIdleSeconds);
manager.addCache(cache);
name:缓存名称。
maxElementsInMemory:设置基于内存的缓存可存放对象的最大数目。
overflowToDisk:如果为true,表示当基于内存的缓存中的对象数目达到了maxElementsInMemory界限后,会把益出 的对象写到基于硬盘的缓存中。注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行。
eternal:如果为true,表示对象永远不会过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false;
timeToLiveSeconds:设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期。当对象过期,EHCache将把它从缓存中清除。只有当eternal属性为false, 该属性才有效。如果该属性值为0,则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds 属性,才有意义。
timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了timeToIdleSeconds属性 值, 这个对象就会过期。当对象过期,EHCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示 对象可以无限期地处于空闲状态。
3.使用cache
Cache cache = manager.getCache(name);
Element element = new Element(key,value);
cache.put(element);
Element element1 = cache.get(key);
Object object = element1.getObjectValue();
element中的存入的objectValue可以是字符串、对象或者集合等。如果直接存入自定义对象,就必须实现Serializable接口,如果对象放在集合中存入缓存则可以不用Serializable接口。如果存入集合可以使用方法所接受的参数作为key。