ehCache浅谈
来源:互联网 发布:p城堡垒优化助手 编辑:程序博客网 时间:2024/04/30 06:28
ehCache浅谈 2011-09-14 12:59:39
分类: 服务器与存储
Ehcache的类层次模型主要为三层,最上层的是CacheManager,他是操作Ehcache的入口。我们可以通过CacheManager.getInstance()获得一个单子的CacheManger,或者通过CacheManger的构造函数创建一个新的CacheManger。每个CacheManager都管理着多个Cache。而每个Cache都以一种类Hash的方式,关联着多个Element。而Element则是我们用于存放要缓存内容的地方。
在配置EhCache前需要引入两个开发包:ehcache-1.3.0.jar和commons-logging-1.04.jar
配置文件
例子:ehcache.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <ehcache>
- <defaultCache maxElementsInMemory="2" eternal="false"
- timeToIdleSeconds="1" timeToLiveSeconds="1" overflowToDisk="false"
- memoryStoreEvictionPolicy="LRU" />
- <cache name="sampleCache1" maxElementsInMemory="5" eternal="false"
- overflowToDisk="false" timeToIdleSeconds="1" timeToLiveSeconds="1"
- memoryStoreEvictionPolicy="LRU" >
- </cache>
- </ehcache>
注:在ehcache的配置文件里面必须配置defaultCache。每个标签定义一个新的cache,属性的含义基本上可以从名字上得到,详细的说明可以参考上面的链接。
示例程序:
例子:
- package ehcache.test;
- import java.util.List;
- import net.sf.ehcache.Cache;
- import net.sf.ehcache.CacheManager;
- import net.sf.ehcache.Element;
- public class Test {
- public static void main(String[] args) throws Exception {
- CacheManager manager = new CacheManager("ehcache.xml");
- Cache cache = manager.getCache("sampleCache1");
- for (int i = 0; i < 6; i++) {
- Element e = new Element("key" + i, "value" + i);
- cache.put(e);
- }
- List<String> keys = cache.getKeys();
- for (String key : keys) {
- System.out.println(key + "," + cache.get(key));
- }
- }
- }
注:程序的流程也是比较明晰的,首先是获取一个CacheManager,这是使用Ehcache的入口,然后通过名字获取某个Cache,然后就可以对Cache存取Element。Cache使用类Hash的方式来管理Element。
事件处理
说明:可以为CacheManager添加事件监听,当对CacheManager增删Cache时,事件处理器将会得到通知。要配置事件处理,需要通过ehcache的配置文件来完成。
配置文件:ehcache.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <ehcache>
- <defaultCache maxElementsInMemory="2" eternal="false"
- timeToIdleSeconds="1" timeToLiveSeconds="1" overflowToDisk="false"
- memoryStoreEvictionPolicy="LRU" />
- <cache name="sampleCache1" maxElementsInMemory="5" eternal="false"
- overflowToDisk="false" timeToIdleSeconds="1" timeToLiveSeconds="1"
- memoryStoreEvictionPolicy="LRU" >
- <cacheEventListenerFactory class="ehcache.test.CELF"/>
-
- </cache>
- </ehcache>
注:通过来注册事件处理器的工厂类。
代码:
- package ehcache.test;
- import java.util.Properties;
- import net.sf.ehcache.CacheException;
- import net.sf.ehcache.Ehcache;
- import net.sf.ehcache.Element;
- import net.sf.ehcache.event.CacheEventListener;
- import net.sf.ehcache.event.CacheEventListenerFactory;
- public class CELF extends CacheEventListenerFactory {
- @Override
- public CacheEventListener createCacheEventListener(Properties properties) {
- return new CEL();
- }
- }
- class CEL implements CacheEventListener {
- public void dispose() {}
- public void notifyElementEvicted(Ehcache cache, Element element) {}
- public void notifyElementExpired(Ehcache cache, Element element) {}
- public void notifyElementPut(Ehcache cache, Element element)
- throws CacheException {
- System.out.println(element.getKey() + " was added.");
- }
- public void notifyElementRemoved(Ehcache cache, Element element)
- throws CacheException {
- System.out.println(element.getKey() + " was removed.");
- }
- public void notifyElementUpdated(Ehcache cache, Element element)
- throws CacheException {}
- public void notifyRemoveAll(Ehcache cache) {}
- @Override
- public Object clone() throws CloneNotSupportedException {
- return super.clone();
- }
- }
0 0
- 浅谈EHCache
- ehCache浅谈
- ehcache和redis的浅谈
- Ehcache
- Ehcache
- ehcache
- ehcache
- EHCache
- ehCache
- ehcache
- ehcache
- ehcache
- ehcache
- ehcache
- ehcache
- EhCache
- Ehcache
- ehcache
- MFC中字符串转换和延时函数
- QT基础Day01
- 快捷方便的调试微信公众号内的H5网页
- 写个简单的黄油刀
- ios SoapService请求
- ehCache浅谈
- 假装全新的开始
- js查找大小值
- request的常用方法
- 安卓自定义View进阶-Canvas之绘制图形
- 仿新版QQ锁屏下弹窗
- Linux schedule introduction
- vncserver -kill后面冒号左右空格的影响
- use boost.python to Warp C++ for python