JCS和EHCACHE

being 2012-01-04

最近项目中需要使用Cache来控制程序运行中占用内存大小,搜索了一下,JCS和Ehcache使用比较简单.

Java缓存系统(JavaCachingSystem,JCS)

是一个用于Java应用程序的强大分布式缓存系统,它是拥有简单API的高度可配置的工具。具体使用方法如下:

首先需要一个重要的配置文件,cache.ccf

基本配置:

jcs.default=jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

jcs.default.cacheattributes.MaxObjects=1000

jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache

该配置文件将内存缓存指定为一个LRUMemoryCache。还可以看到,内存中能保存的对象的最大数量被设置为1000。

JCS配置中定义的区域:

jcs.default=DISK_REGION

jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

jcs.default.cacheattributes.MaxObjects=1000

jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache

jcs.region.OUR_REGION=DISK_REGION

jcs.region.OUR_REGION.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

jcs.region.OUR_REGION.cacheattributes.MaxObjects=1000

jcs.region.OUR_REGION.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache

jcs.region.OUR_REGION.cacheattributes.UseMemoryShrinker=true

jcs.region.OUR_REGION.cacheattributes.MaxMemoryIdleTimeSeconds=3600

jcs.region.OUR_REGION.cacheattributes.ShrinkerIntervalSeconds=60

jcs.region.OUR_REGION.cacheattributes.MaxSpoolPerRun=500

jcs.region.OUR_REGION.elementattributes=org.apache.jcs.engine.ElementAttributes

jcs.region.OUR_REGION.elementattributes.IsEternal=false

jcs.auxiliary.DISK_REGION=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory

jcs.auxiliary.DISK_REGION.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes

jcs.auxiliary.DISK_REGION.attributes.DiskPath=c:/jcs/disk_region

jcs.auxiliary.DISK_REGION.attributes.maxKeySize=100000

第一行表明该配置将默认区域设置为DISK_REGION。DISK_REGION是IndexedDiskCacheFactory类型,并且该文件在磁盘上指定为c:\jcs\disk_region。第二个配置组定义了我自己的区域,我为它添加了一些选项,这种类型的配置(在指定用户定义区域时同时使用内存区域和磁盘区域)是很常见的。第3个配置组定义了一个辅助区域。

JCS有两个依赖项:concurrent和commons-logging(JCS1.2.7.0之前的版本中,还有两个其他依赖项:commons-collections和commons-lang)。

JCS的基本用法:

InitializetheJCSobjectandgetaninstanceofthedefaultcacheregion

JCScache=JCS.getInstance("default");

JCS实例后,可以调用最需要的方法。put方法将一个新对象放入缓存中。接下来只需一个key(第一个参数)和一个value(第二个参数):

cache.put(key,value);

检索缓存对象只使用JCS提供的get方法:

cache.get(key);

清除缓存区域:

//Disposeofaspecificcacheditem

cache.remove(key);

//Disposeofallcachedata

cache.clear();

//Disposeofthecacheregion

cache.dispose();

在使用JCS时候,我们经常会把对象放入缓存中,这里需要注意要实现序列化.

EHCache使用简介

EHCache是一个纯java的,在Hibernate2.1充当可插入的的在进程中的缓存,它具有以下缓存,最小的依赖性,全面的文特性:快速,简单,丰富的文档和测试用例。

官方网站http://ehcache.sourceforge.net/

在使用EhCache也需要一个配置文件,但现在版本你也可以不需要配置文件,在创建Cache时候传一些配置值给它就可以了.

首先需要创建一个CacheManager对象,有四种方式:

方法一,默认配置文件创建:

CacheManagermanager=CacheManager.create();

方法二,使用指定配置文件创建:

CacheManagermanager=CacheManager.create("src/config/ehcache.xml");

方法三,从classpath找寻配置文件并创建:

URLurl=getClass().getResource("/anotherconfigurationname.xml");

CacheManagermanager=CacheManager.create(url);

方法四,通过输入流创建:

InputStreamfis=newFileInputStream(newFile("src/config/ehcache.xml").getAbsolutePath());

try{

CacheManagermanager=CacheManager.create(fis);

}finally{

fis.close();

}

卸载CacheManager,关闭Cache

manager.shutdown();

使用Caches

取得配置文件中预先定义的sampleCache1设置,生成一个Cache

Cachecache=manager.getCache("sampleCache1");

设置一个名为test的新cache,test属性为默认

CacheManagermanager=CacheManager.create();

manager.addCache("test");

设置一个名为test的新cache,并定义其属性

CacheManagermanager=CacheManager.create();

Cachecache=newCache("test",1,true,false,5,2);

manager.addCache(cache);

往cache中加入元素

Elementelement=newElement("key1","value1");

cache.put(newElement(element);

从cache中取得元素

Elementelement=cache.get("key1");

Cache属性说明:

构造函数:

publicCache(java.lang.Stringname,intmaxElementsInMemory,booleanoverflowToDisk,booleaneternal,longtimeToLiveSeconds,longtimeToIdleSeconds)

参数说明:

name-元素名字。

maxElementsInMemory-设定内存中创建对象的最大值。

overflowToDisk-设置当内存中缓存达到maxInMemory限制时元素是否可写到磁盘上。

eternal-设置元素(译注:内存中对象)是否永久驻留。如果是,将忽略超时限制且元素永不消亡。

timeToIdleSeconds-设置某个元素消亡前的停顿时间。也就是在一个元素消亡之前,两次访问时间的最大时间间隔值。这只能在元素不是永久驻留时有效(译注:如果对象永恒不灭,则设置该属性也无用)。如果该值是0就意味着元素可以停顿无穷长的时间。

timeToLiveSeconds-为元素设置消亡前的生存时间。也就是一个元素从构建到消亡的最大时间间隔值。这只能在元素不是永久驻留时有效。

ehcache.xml配置文件中的属性和构造方法里面意思一样.

相关推荐