EhCaChe介绍
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。
主要的特性有:
1. 快速
2. 简单
3. 多种缓存策略
4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题
5. 缓存数据会在虚拟机重启的过程中写入磁盘
6. 可以通过RMI、可插入API等方式进行分布式缓存
7. 具有缓存和缓存管理器的侦听接口
8. 支持多缓存管理器实例,以及一个实例的多个缓存区域
9. 提供Hibernate的缓存实现
ehcache.xml
EhCaChe通过配置XML文件来管理配置缓存
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
updateCheck="true" monitoring="autodetect"
dynamicConfig="true">
<diskStore path="D:\cache"/>
<!--
defaultCache:默认的缓存配置信息,如果不加特殊说明,则所有对象按照此配置项处理
maxElementsInMemory:设置了缓存的上限,最多存储多少个记录对象
eternal:代表对象是否永不过期
overflowToDisk:当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到 磁盘中
-->
<defaultCache
maxElementsInMemory="20"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="1800"
timeToLiveSeconds="1800">
</defaultCache>
<!--
maxElementsInMemory 内存中 cache 中最多可以存放的元素的数量
overflowToDisk="true" 内存溢出缓存放在硬盘中
eternal="true" 永不过期
maxElementsOnDisk="0" 硬盘可放缓存数量 0表示无限2
diskPersistent="true" 是否缓存虚拟机重启期数据
-->
<cache name="test"
maxElementsInMemory="1"
overflowToDisk="true"
eternal="true"
maxElementsOnDisk="0"
diskPersistent="true"
>
</cache>
</ehcache>
保存缓存至本地
public class Test {
public static void main(String[] args) {
//获取项目根目录下的ehcache.xml文件
InputStream in = EhcacheTest.class.getClassLoader()
.getResourceAsStream("ehcache.xml");
//获取缓存管理对象
CacheManager cm = CacheManager.create(in);
//获取ehcache.xml中设置的缓存
Cache cache = cm.getCache("test");
//放进缓存数据
Element element = new Element("test", "EhCacheTest");
//放入缓存
cache.put(element);
cache.flush();
//关闭缓存管理
cm.shutdown();
}
}
运行上段程序,D:\ehcache 会保存缓存文件
获取保存本地的缓存
public class Test {
public static void main(String[] args) {
//获取项目根目录下的ehcache.xml文件
InputStream in = EhcacheTest.class.getClassLoader()
.getResourceAsStream("ehcache.xml");
//获取缓存管理对象
CacheManager cm = CacheManager.create(in);
//获取ehcache.xml中设置的缓存
Cache cache = cm.getCache("test");
Element el = cache.get("test");
System.out.println(el.getObjectValue());
cm.shutdown();
}
}
上段代码可获取保存本地的缓存