[FROM: http://blog.csdn.net/zyl623/archive/2007/02/28/1517465.aspx
http://hi.baidu.com/en_wan/blog/item/20b78c59bfda0a2f2934f0f8.html]
- //ehcache-1.2 管理器各种建立的方法:
- //方法一:
- CacheManager manager = new CacheManager();
- //方法二:
- CacheManager manager = new CacheManager("src/config/ehcache.xml");
- //方法三:
- URL url = getClass().getResource("/anotherconfigurationname.xml");
- CacheManager manager = new CacheManager(url);
- // 方法四:
- InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath());
- try {
- CacheManager manager = new CacheManager(fis);
- } finally {
- fis.close();
- }
- //缓存的创建,采用自动的方式
- CacheManager singletonManager = CacheManager.create();
- singletonManager.addCache("testCache");
- Cache test = singletonManager.getCache("testCache");
- //或者直接创建Cache
- CacheManager singletonManager = CacheManager.create();
- Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);
- manager.addCache(memoryOnlyCache);
- Cache test = singletonManager.getCache("testCache");
- //ehcache-1.2 cacheNames 列表的取得;
- //方法一:
- CacheManager.create();
- String[] cacheNames = CacheManager.getInstance().getCacheNames();
- //方法二:
- CacheManager manager = new CacheManager();
- String[] cacheNames = manager.getCacheNames();
- //方法三:
- CacheManager manager1 = new CacheManager("src/config/ehcache1.xml");
- String[] cacheNamesForManager1 = manager1.getCacheNames();
- //删除cache
- CacheManager singletonManager = CacheManager.create();
- singletonManager.removeCache("sampleCache1");
- //在使用ehcache后,需要关闭
- CacheManager.getInstance().shutdown()
- //caches 的使用
- Cache cache = manager.getCache("sampleCache1");
- //执行crud操作
- Cache cache = manager.getCache("sampleCache1");
- Element element = new Element("key1", "value1");
- cache.put(element);
- //update
- Cache cache = manager.getCache("sampleCache1");
- cache.put(new Element("key1", "value1");
- //This updates the entry for "key1"
- cache.put(new Element("key1", "value2");
- //get Serializable
- Cache cache = manager.getCache("sampleCache1");
- Element element = cache.get("key1");
- Serializable value = element.getValue();
- //get non serializable
- Cache cache = manager.getCache("sampleCache1");
- Element element = cache.get("key1");
- Object value = element.getObjectValue();
- //remove
- Cache cache = manager.getCache("sampleCache1");
- Element element = new Element("key1", "value1"
- cache.remove("key1");
- //Cache 属性说明:
- // 构造函数:
- public Cache(java.lang.String name,
- int maxElementsInMemory,
- boolean overflowToDisk,
- boolean eternal,
- long timeToLiveSeconds,
- long timeToIdleSeconds)
- 参数说明:
- name - 元素名字。
- maxElementsInMemory - 设定内存中创建对象的最大值。
- overflowToDisk - 设置当内存中缓存达到 maxInMemory 限制时元素是否可写到磁盘上。
- eternal - 设置元素(译注:内存中对象)是否永久驻留。如果是,将忽略超时限制且 元素永不消亡。
- timeToIdleSeconds - 设置某个元素消亡前的停顿时间。
- 也就是在一个元素消亡之前,两次访问时间的最大时间间隔值。
- 这只能在元素不是永久驻留时有效(译注:如果对象永恒不灭,则
- 设置该属性也无用)。
- 如果该值是 0 就意味着元素可以停顿无穷长的时间。
- timeToLiveSeconds - 为元素设置消亡前的生存时间。
- 也就是一个元素从构建到消亡的最大时间间隔值。
- 这只能在元素不是永久驻留时有效。
- ehcache的默认配置文件名为ehcache.xml,也可以自己指定。配置文件比较的简单,基本上也就是常用的几个元素。
- 配置元素说明:
- diskStore:配置DiskStore,当需要使用磁盘保存的时候,需要对象实现序列化接口
- 属性:path 配置文件存储位置,如user.home,user.dir,java.io.tmpdir
- cacheManagerEventListenerFactory :指定CacheManagerEventListenerFactory,用于创建CacheManagerPeerProvider
- 用于提醒当CacheManager中的缓存增加或者删除时。
- 属性:class:完整的工厂类名称
- properties:逗号分割的属性
- 事件包括 增加cache和删除cache
- cacheManagerPeerProviderFactory:指定CacheManagerPeerProviderFactory,用于创建 CacheManagerPeerProvider,用于在cluster中查找CacheManagers,主要用于机群环境
- 属性:
- class:完整的工厂类名称
- properties:逗号分割的属性
- 默认的配置:
- <cacheManagerPeerProviderFactory
- class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
- properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,
- multicastGroupPort=4446, timeToLive=32"/>
- <cacheManagerPeerProviderFactory class=
- "net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
- properties="peerDiscovery=manual,
- rmiUrls=//server1:40000/sampleCache1|//server2:40000/sampleCache 1//server1:40000/sampleCache2|//server2:40000/sampleCache2"/>
- cacheManagerPeerListenerFactory:指定CacheManagerPeerListenerFactory,用于创建CacheManagerPeerListener,监听cluster中的复制信息
- 属性:
- class:完整的工厂类名称
- properties:逗号分割的属性
- 默认配置
- <cacheManagerPeerListenerFactory
- class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
- properties="hostName=fully_qualified_hostname_or_ip,
- port=40001,
- socketTimeoutMillis=120000"/>
- defaultCache: 默认缓存配置
- 必须属性:
- name:设置缓存的名称,用于标志缓存,惟一
- maxElementsInMemory:在内存中最大的对象数量
- maxElementsOnDisk:在DiskStore中的最大对象数量,如为0,则没有限制
- eternal:设置元素是否永久的,如果为永久,则timeout忽略
- overflowToDisk:是否当memory中的数量达到限制后,保存到Disk
- 可选的属性:
- timeToIdleSeconds:设置元素过期前的空闲时间
- timeToLiveSeconds:设置元素过期前的活动时间
- diskPersistent:是否disk store在虚拟机启动时持久化。默认为false
- diskExpiryThreadIntervalSeconds:运行disk终结线程的时间,默认为120秒
- memoryStoreEvictionPolicy:策略关于Eviction
- 缓存子元素: cacheEventListenerFactory:注册相应的的缓存监听类,用于处理缓存事件,如put,remove,update,和expire
- bootstrapCacheLoaderFactory:指定相应的BootstrapCacheLoader,用于在初始化缓存,以及自动设置。
- 如下的例子:
- <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
- properties="replicateAsynchronously=true,
- replicatePuts=true,
- replicateUpdates=true,
- replicateUpdatesViaCopy=true,
- replicateRemovals=true "/>
- <bootstrapCacheLoaderFactory
- class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"
- properties="bootstrapAsynchronously=true, maximumChunkSizeBytes=5000000"/>
- <defaultCache
- maxElementsInMemory="10000"
- eternal="false"
- timeToIdleSeconds="120"
- timeToLiveSeconds="120"
- overflowToDisk="true"
- maxElementsOnDisk="10000000"
- diskPersistent="false"
- diskExpiryThreadIntervalSeconds="120"
- memoryStoreEvictionPolicy="LRU"
- />
- <!--cache配置同defaultCache -->
- <cache name="sampleDistributedCache1"
- maxElementsInMemory="10"
- eternal="false"
- timeToIdleSeconds="100"
- timeToLiveSeconds="100"
- overflowToDisk="false">
- <cacheEventListenerFactory
- class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
- <bootstrapCacheLoaderFactory
- class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/>
- </cache>