EHcache缓存框架详解
添加时间:2013-6-13 点击量:
EhCache是一个纯Java的过程内缓存框架,具有快速、精壮等特点,也是Hibernate中默认的CacheProvider。
归纳一下它可能具有一下几个特点:
1. 快速.
2. 简单.
3. 多种缓存策略
4. 缓存数占领两级:内存和磁盘,是以无需愁闷容量题目
5. 缓存数据会在虚拟机重启的过程中写入磁盘
6. 可以经由过程RMI、可插入API等体式格式进行分布式缓存
7. 具有缓存懈弛存经管器的侦听接口
8. 支撑多缓存经管器实例,以及一个实例的多个缓存区域
9. 供给Hibernate的缓存实现
那么我们在开辟中到底如何应用EhCache框架呢?
获取Ehcache相干jar包及帮助文档。
地址:http://ehcache.org/code
相干文档地址:http://ehcache.org/apidocs/
/
maxElementsInMemory:缓存中容许创建的最大对象数
eternal:缓存中对象是否为永远的,若是是,超时设置将被忽视,对象从不过期。
timeToIdleSeconds:缓存数据的钝化时候,也就是在一个元素灭亡之前,两次接见时候的最大时候间隔值, 这只能在元素不是永远驻留时有效,
若是该值是 0 就意味着元素可以平息无穷长的时候。
timeToLiveSeconds:缓存数据的生活生计时候,也就是一个元素从构建到灭亡的最大时候间隔值,这只能在元素不是永远驻留时有效,
若是该值是0就意味着元素可以平息无穷长的时候。 overflowToDisk:内存不足时,是否启用磁盘缓存。
memoryStoreEvictionPolicy:缓存满了之后的镌汰算法
@param args
/
public static void main(String[] args) {
// 创建一个缓存经管器对象
CacheManager cacheManager = CacheManager.create();
// 定名缓存经管器
cacheManager.setName(testCacheManager);
// 创建一个指定缓存名称的缓存对象
Cache cache = new Cache(testCache, 4, false, false, 1, 1);
// cache.setDisabled(true);
// 将缓存对象添加至缓存经管器
cacheManager.addCache(cache);
// cacheManager.shutdown();
System.out.println(断定缓存经管器中是否存在指定的缓存对象:
+ cacheManager.cacheExists(testCache));
DiskStorePathManager disStoreManager = cacheManager
.getDiskStorePathManager();
System.out.println(获取当前设备文件硬盘路径:
+ disStoreManager.getFile(testCache.xml));
Map<String, Object> map = new HashMap<String, Object>();
map.put(name, tom);
map.put(sex, 男);
map.put(age, 1);
// 重视:若是当前缓存对象设置了内存中最大缓存keyValue对象的话,若是超出时,则后面的覆盖前面的keyValue对象
cache.put(new Element(cache1, map));
cache.put(new Element(cache2, map));
cache.put(new Element(cache3, map));
Element element = new Element(cache4, map);
element.setTimeToLive(1);
cache.put(element);
String[] cacheNames = cacheManager.getCacheNames();
for (int i = 0; i < cacheNames.length; i++) {
System.out.println(缓存 + i + : + cacheNames[i]);
}
// System.out.println(当前活动的缓存设备文件内容:\n
// + cacheManager.getActiveConfigurationText());
System.out.println(缓存经管器对象是否定名: + cacheManager.isNamed());
Cache testCahe = cacheManager.getCache(testCache);
System.out.println(缓存的状况: + testCahe.getStatus());
System.out.println(缓存对象均匀获取时候: + testCahe.getAverageGetTime());
System.out.println(获取缓存对象占用内存空间大小: + testCahe.getMemoryStoreSize());
System.out.println(获取缓存对象大小: + testCahe.getSize());
System.out.println(缓存是否封闭: + testCahe.isDisabled());
System.out.println(断定某一个缓存key是否存在在缓存中
+ testCahe.isKeyInCache(cache3));
System.out.println(断定某一个缓存值是否缓存在对象中: + testCahe.isValueInCache(map));
// 验证缓存对象是否禁用
if (!testCahe.isDisabled()) {
System.out.println(断定缓存中某个对象是否过期:
+ testCahe.isExpired(testCahe.get(cache3)));
}
System.out.println(testCahe.getName() + 缓存已封闭);
}
System.out.println(断定某一个key是否缓存在内存中:
+ testCahe.isElementInMemory(cache1));
System.out.println(断定某一个key是否缓存在磁盘中:
+ testCahe.isElementOnDisk(cache1));
System.out.println(\n);
List cacheKey = cache.getKeys();
for (int i = 0; i < cacheKey.size(); i++) {
Element cacheElement = testCahe.get(cacheKey.get(i));
System.out.println(Key: + cacheKey.get(i) + ,value:
+ cacheElement.getObjectValue());
}
}
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
EhCache是一个纯Java的过程内缓存框架,具有快速、精壮等特点,也是Hibernate中默认的CacheProvider。
归纳一下它可能具有一下几个特点:
1. 快速.
2. 简单.
3. 多种缓存策略
4. 缓存数占领两级:内存和磁盘,是以无需愁闷容量题目
5. 缓存数据会在虚拟机重启的过程中写入磁盘
6. 可以经由过程RMI、可插入API等体式格式进行分布式缓存
7. 具有缓存懈弛存经管器的侦听接口
8. 支撑多缓存经管器实例,以及一个实例的多个缓存区域
9. 供给Hibernate的缓存实现
那么我们在开辟中到底如何应用EhCache框架呢?
获取Ehcache相干jar包及帮助文档。
地址:http://ehcache.org/code
相干文档地址:http://ehcache.org/apidocs/
/
maxElementsInMemory:缓存中容许创建的最大对象数
eternal:缓存中对象是否为永远的,若是是,超时设置将被忽视,对象从不过期。
timeToIdleSeconds:缓存数据的钝化时候,也就是在一个元素灭亡之前,两次接见时候的最大时候间隔值, 这只能在元素不是永远驻留时有效,
若是该值是 0 就意味着元素可以平息无穷长的时候。
timeToLiveSeconds:缓存数据的生活生计时候,也就是一个元素从构建到灭亡的最大时候间隔值,这只能在元素不是永远驻留时有效,
若是该值是0就意味着元素可以平息无穷长的时候。 overflowToDisk:内存不足时,是否启用磁盘缓存。
memoryStoreEvictionPolicy:缓存满了之后的镌汰算法
@param args
/
public static void main(String[] args) {
// 创建一个缓存经管器对象
CacheManager cacheManager = CacheManager.create();
// 定名缓存经管器
cacheManager.setName(testCacheManager);
// 创建一个指定缓存名称的缓存对象
Cache cache = new Cache(testCache, 4, false, false, 1, 1);
// cache.setDisabled(true);
// 将缓存对象添加至缓存经管器
cacheManager.addCache(cache);
// cacheManager.shutdown();
System.out.println(断定缓存经管器中是否存在指定的缓存对象:
+ cacheManager.cacheExists(testCache));
DiskStorePathManager disStoreManager = cacheManager
.getDiskStorePathManager();
System.out.println(获取当前设备文件硬盘路径:
+ disStoreManager.getFile(testCache.xml));
Map<String, Object> map = new HashMap<String, Object>();
map.put(name, tom);
map.put(sex, 男);
map.put(age, 1);
// 重视:若是当前缓存对象设置了内存中最大缓存keyValue对象的话,若是超出时,则后面的覆盖前面的keyValue对象
cache.put(new Element(cache1, map));
cache.put(new Element(cache2, map));
cache.put(new Element(cache3, map));
Element element = new Element(cache4, map);
element.setTimeToLive(1);
cache.put(element);
String[] cacheNames = cacheManager.getCacheNames();
for (int i = 0; i < cacheNames.length; i++) {
System.out.println(缓存 + i + : + cacheNames[i]);
}
// System.out.println(当前活动的缓存设备文件内容:\n
// + cacheManager.getActiveConfigurationText());
System.out.println(缓存经管器对象是否定名: + cacheManager.isNamed());
Cache testCahe = cacheManager.getCache(testCache);
System.out.println(缓存的状况: + testCahe.getStatus());
System.out.println(缓存对象均匀获取时候: + testCahe.getAverageGetTime());
System.out.println(获取缓存对象占用内存空间大小: + testCahe.getMemoryStoreSize());
System.out.println(获取缓存对象大小: + testCahe.getSize());
System.out.println(缓存是否封闭: + testCahe.isDisabled());
System.out.println(断定某一个缓存key是否存在在缓存中
+ testCahe.isKeyInCache(cache3));
System.out.println(断定某一个缓存值是否缓存在对象中: + testCahe.isValueInCache(map));
// 验证缓存对象是否禁用
if (!testCahe.isDisabled()) {
System.out.println(断定缓存中某个对象是否过期:
+ testCahe.isExpired(testCahe.get(cache3)));
}
System.out.println(testCahe.getName() + 缓存已封闭);
}
System.out.println(断定某一个key是否缓存在内存中:
+ testCahe.isElementInMemory(cache1));
System.out.println(断定某一个key是否缓存在磁盘中:
+ testCahe.isElementOnDisk(cache1));
System.out.println(\n);
List cacheKey = cache.getKeys();
for (int i = 0; i < cacheKey.size(); i++) {
Element cacheElement = testCahe.get(cacheKey.get(i));
System.out.println(Key: + cacheKey.get(i) + ,value:
+ cacheElement.getObjectValue());
}
}
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》