EHCache使用简介

EHCache 是一个纯java的,在Hibernate2.1充当可插入的的在进程中的缓存,它具有以下缓存,最小的依赖性,全面的文特性:快速,简单,丰富的文档和测试用例。
   官方网站 http://ehcache.sourceforge.net/
--------------------------
----------使用简介------------
--------------------------
   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");
     CacheManager manager2 = new CacheManager("src/config/ehcache2.xml");
     String[] cacheNamesForManager1 = manager1.getCacheNames();
     String[] cacheNamesForManager2 = manager2.getCacheNames();
   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();
     }
   添加和删除缓存元素
     设置一个名为test 的新cache,test属性为默认
     CacheManager singletonManager = CacheManager.create();
     singletonManager.addCache("testCache");
     Cache test = singletonManager.getCache("testCache");
     设置一个名为test 的新cache,并定义其属性
     CacheManager singletonManager = CacheManager.create();
     Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);
     manager.addCache(memoryOnlyCache);
     Cache test = singletonManager.getCache("testCache");
   
     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        - 为元素设置消亡前的生存时间。
                             也就是一个元素从构建到消亡的最大时间间隔值。
                             这只能在元素不是永久驻留时有效。
     删除缓存元素:
     CacheManager singletonManager = CacheManager.create();
     singletonManager.removeCache("test");
   关闭缓存管理器 CacheManager
   
     CacheManager.getInstance().shutdown();
   对于缓存对象的操作:
     放入一个简单的对象到缓存元素;
     Cache cache = manager.getCache("sampleCache1");
     Element element = new Element("key1", "value1");
     cache.put(element);
     得到一个序列化后的对象属性值;
     Cache cache = manager.getCache("sampleCache1");
     Element element = cache.get("key1");
     Serializable value = element.getValue();
     得到一个没有序列化后的对象属性值;
     Cache cache = manager.getCache("sampleCache1");
     Element element = cache.get("key1");
     Object value = element.getObjectValue();
   
     删除一个对象从元素;
     Cache cache = manager.getCache("sampleCache1");
     Element element = new Element("key1", "value1"
     cache.remove("key1");
   对于永固性磁盘存储,立即存储到磁盘:
     Cache cache = manager.getCache("sampleCache1");
     cache.flush();
   获得缓存大小:
     得到缓存的对象数量;
     Cache cache = manager.getCache("sampleCache1");
     int elementsInMemory = cache.getSize();
     得到缓存对象占用内存的数量
     Cache cache = manager.getCache("sampleCache1");
     long elementsInMemory = cache.getMemoryStoreSize();
     得到缓存对对象占用磁盘的数量
     Cache cache = manager.getCache("sampleCache1");
     long elementsInMemory = cache.getDiskStoreSize();
   关于缓存的读取和丢失的记录
     得到缓存读取的命中次数;
     Cache cache = manager.getCache("sampleCache1");
     int hits = cache.getHitCount();
   
     得到内存中缓存读取的命中次数;
     Cache cache = manager.getCache("sampleCache1");
     int hits = cache.getMemoryStoreHitCount();
     得到磁盘中缓存读取的命中次数;
     Cache cache = manager.getCache("sampleCache1");
     int hits = cache.getDiskStoreCount();
   
     得到缓存读取的丢失次数;
     Cache cache = manager.getCache("sampleCache1");
     int hits = cache.getMissCountNotFound();
     得到缓存读取的已经被销毁的对象丢失次数;
     Cache cache = manager.getCache("sampleCache1");
     int hits = cache.getMissCountExpired();
--------------------------
----------简单例子------------
--------------------------
   实战:
     XML文件格式:
       <ehcache>
         <diskStore path="java.io.tmpdir"/>
         <defaultCache
             maxElementsInMemory="10000"
             eternal="false"
             timeToIdleSeconds="120"
             timeToLiveSeconds="120"
             overflowToDisk="true"
             diskPersistent="false"
             diskExpiryThreadIntervalSeconds="120"
             memoryStoreEvictionPolicy="LRU"
             />
         <cache name="cache1"
             maxElementsInMemory="10000"
             eternal="false"
             overflowToDisk="true"
             timeToIdleSeconds="2"
             timeToLiveSeconds="3"
             memoryStoreEvictionPolicy="LFU"
             />
           
       </ehcache>
   源码:
     import java.io.Serializable;
     import net.sf.ehcache.Cache;
     import net.sf.ehcache.CacheManager;
     import net.sf.ehcache.Element;
     /**
      #############################################################################
      # DESCRIBE ehcache 缓存操作DEMO
      # AUTHOR  悠~游
      # DATE    2006-7-10
      # COMPANY FLX
      # PORJECT ehcache-demo
      #############################################################################
      */
     public class Demo {
     
       static CacheManager manager= new CacheManager();
       /**
        *##############################################################################
        *

     }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值