JSP学习笔记(七十六):使用EHCache

一、获取EHCache

下载地址:http://ehcache.sourceforge.net/

二、使用EHCache

添加对应的jar包到classpath中:我使用的是1.5,需要添加ehcache-1.5.0.jar,backport-util-concurrent-3.0.jar,commons-logging-1.0.4.jar(这个包struts2中有,我没有添加)

在src目录建立ehcache.xml文件,内容如下:

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation
="ehcache.xsd">
<diskStore path="java.io.tmpdir"/>
<defaultCache name="cache1" maxElementsInMemory="300" eternal="false"
timeToIdleSeconds
="500" timeToLiveSeconds="500" overflowToDisk="true" />
</ehcache>

 摘抄部分网上内容如下:

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>

 

添加一个类,缓存一个对象:

        CacheManager manager = CacheManager.getInstance();
String CacheName
= "myCache";
Cache cache
= manager.getCache(CacheName);
if (cache == null) {
manager.addCache(CacheName);
cache
= manager.getCache(CacheName);
}
String cacheKey
= "myKey";
Element element
= cache.get(cacheKey);
if (element == null) {
str
= "123";
cache.put(
new Element(cacheKey,str));

System.out.println(
123);
}
else {
str
= (String)element.getValue();

System.out.println(
456);
}

System.out.println(str);
posted @ 2008-11-03 20:26  魔豆  阅读(3220)  评论(0编辑  收藏  举报