要使用java caching system,需要下面这几个包:jcs.jar,concurrent.jar,commons-logging.jar, commons-lang.jar,commons-collection.jar这几个包,在java工程里面,
首先新建一个使用jcs的配置文件:cache.ccf,文件名不能改。
- # DEFAULT CACHE REGION
- # sets the default aux value for any non configured caches
- jcs.default=
- jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
- jcs.default.cacheattributes.MaxObjects=2000
- jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
- jcs.default.elementattributes.IsEternal=false
- jcs.default.elementattributes.MaxLifeSeconds=3600
- jcs.default.elementattributes.IdleTime=1800
- jcs.default.elementattributes.IsSpool=true
- jcs.default.elementattributes.IsRemote=true
- jcs.default.elementattributes.IsLateral=true
- # CACHE REGIONS AVAILABLE
- # Regions preconfigured for caching
- jcs.region.bookCache=
- jcs.region.bookCache.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
- jcs.region.bookCache.cacheattributes.MaxObjects=1200
- jcs.region.bookCache.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
- jcs.region.bookCache.elementattributes.IsEternal=false
- jcs.region.bookCache.elementattributes.MaxLifeSeconds=7200
- jcs.region.bookCache.elementattributes.IdleTime=1800
- jcs.region.bookCache.elementattributes.IsSpool=true
- jcs.region.bookCache.elementattributes.IsRemote=true
- jcs.region.bookCache.elementattributes.IsLateral=true
- # AUXILIARY CACHES AVAILABLE
- # Primary Disk Cache -- faster than the rest because of memory key storage
- jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
- jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
- jcs.auxiliary.DC.attributes.DiskPath=/usr/opt/bookstore/raf
- jcs.auxiliary.DC.attributes.MaxPurgatorySize=10000
- jcs.auxiliary.DC.attributes.MaxKeySize=10000
- jcs.auxiliary.DC.attributes.OptimizeAtRemoveCount=300000
- jcs.auxiliary.DC.attributes.MaxRecycleBinSize=7500
然后新建两个类,
- import java.io.Serializable;
- import java.util.List;
- public class Student implements Serializable{
- /**
- *
- */
- public static final long serialVersionUID = 1L;
- public int sno;
- public String sname;
- public Student()
- {}
- public int getSno(){
- return this.sno;
- }
- public void setSno(int no){
- this.sno=no;
- }
- public String getSname(){
- return this.sname;
- }
- public void setSname(String name){
- this.sname=name;
- }
- }
- import org.apache.jcs.JCS;
- public class StuObjManager {
- private static StuObjManager instance;
- private static int checkedOut=0;
- public static JCS stuCache;
- private StuObjManager()
- {
- try
- {
- stuCache=JCS.getInstance("stuCache");
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- }
- public static StuObjManager getInstance()
- {
- synchronized(StuObjManager.class)
- {
- if(instance==null)
- {
- instance=new StuObjManager();
- }
- }
- synchronized(instance)
- {
- instance.checkedOut++;
- }
- return instance;
- }
- public Student getStu(int sno)
- {
- return getStu(sno,true);
- }
- public Student getStu(int sno,boolean a)
- {
- Student stu=null;
- if(a)
- {
- stu=(Student)stuCache.get("Stu"+sno);
- }
- if(stu==null)
- {
- stu=loadStu(sno);
- }
- return stu;
- }
- public Student loadStu(int sno)
- {
- Student stu=new Student();
- stu.sno=sno;
- try
- {
- boolean found=false;
- found=true;
- if(found)
- {
- stuCache.put("Stu"+sno, stu);
- }
- }
- catch(Exception e)
- {System.out.println("又报错了!");}
- return stu;
- }
- public void storeStu(Student stu)
- {
- try
- {
- if(stu.sno!=0)
- {
- stuCache.remove("Stu"+stu.sno);
- }
- stuCache.put("Stu"+stu.sno, stu);
- }
- catch(Exception e)
- {}
- }
- public static void main(String [] args)
- {
- long last=System.currentTimeMillis();
- StuObjManager stu=StuObjManager.getInstance();
- for(int i = 0; i < 2000; i++){
- stu.loadStu(i);
- }
- Student stu1=stu.getStu(8,true);
- System.out.println(stu1.sno);
- System.out.println("所需时间:"+(System.currentTimeMillis()-last));
- }
- }
运行类StuObjManager里面的main函数,结果如下:
8
所需时间:1250