java开发之缓存框架--ehcache

来源:互联网 发布:线切割锥度编程软件 编辑:程序博客网 时间:2024/05/17 06:46

一、ehcache.xml配置

将该文件放在src目录下即可。

<ehcache>    <!--         磁盘存储:将缓存中暂时不使用的对象,转移到硬盘,类似于Windows系统的虚拟内存        path:指定在硬盘上存储对象的路径     -->    <diskStore path="java.io.tmpdir" />        <!--         defaultCache:默认的缓存配置信息,如果不加特殊说明,则所有对象按照此配置项处理        maxElementsInMemory:设置了缓存的上限,最多存储多少个记录对象        eternal:代表对象是否永不过期        timeToIdleSeconds:最大的发呆时间        timeToLiveSeconds:最大的存活时间        overflowToDisk:是否允许对象被写入到磁盘     -->    <defaultCache maxElementsInMemory="10000" eternal="false"        timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" />        <!--         cache:为指定名称的对象进行缓存的特殊配置        name:指定对象的完整名     -->    <cache name="ehcache01" maxElementsInMemory="10000" eternal="false"        timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true" />    <cache name="ehcache02" maxElementsInMemory="10000" eternal="false"        timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true" /></ehcache>


、实例

public static void main(String[] args) throws InterruptedException {         CacheManager manager = CacheManager.create();          // 取出所有的cacheName         String names[] = manager.getCacheNames();         System.out.println("----all cache names----");         for (int i = 0; i < names.length; i++) {             System.out.println(names[i]);         }          System.out.println("----------------------");         // 得到一个cache对象         Cache cache1 = manager.getCache(names[0]);          // 向cache1对象里添加缓存         cache1.put(new Element("key1", "values1"));         Element element = cache1.get("key1");          // 读取缓存         System.out.println("key1 \t= " + element.getObjectValue());          // 手动创建一个cache(ehcache里必须有defaultCache存在,"test"可以换成任何值)         Cache cache2 = new Cache("test", 1, true, false, 2, 3);         manager.addCache(cache2);          cache2.put(new Element("jimmy", "菩提树下的杨过"));          // 故意停1.5秒,以验证是否过期         Thread.sleep(1500);          Element eleJimmy = cache2.get("jimmy");          //1.5s < 2s 不会过期         if (eleJimmy != null) {             System.out.println("jimmy \t= " + eleJimmy.getObjectValue());         }          //再等上0.5s, 总时长:1.5 + 0.5 >= min(2,3),过期         Thread.sleep(500);          eleJimmy = cache2.get("jimmy");          if (eleJimmy != null) {             System.out.println("jimmy \t= " + eleJimmy.getObjectValue());         }          // 取出一个不存在的缓存项         System.out.println("fake \t= " + cache2.get("fake"));          manager.shutdown();     }
三、封装的工具

public class EhcacheUtil {  private static final String path = "/ehcache.xml";   private URL url;   private CacheManager manager;   private static EhcacheUtil ehCache;   private EhcacheUtil(String path) {     url = getClass().getResource(path);     manager = CacheManager.create(url);   }   public static EhcacheUtil getInstance() {     if (ehCache== null) {     ehCache= new EhcacheUtil(path);    }     return ehCache;   }   public void put(String cacheName, String key, Object value) {     Cache cache = manager.getCache(cacheName);     Element element = new Element(key, value);     cache.put(element);   }   public Object get(String cacheName, String key) {     Cache cache = manager.getCache(cacheName);     Element element = cache.get(key);     return element == null ? null : element.getObjectValue();   }   public Cache get(String cacheName) {     return manager.getCache(cacheName);   }   public void remove(String cacheName, String key) {     Cache cache = manager.getCache(cacheName);     cache.remove(key);    }    public static void main(String[] args) {EhCacheUtil ehCache = getInstance();ehCache.put("ehcacheGO", "userEch", "123");System.out.println(ehCache.get("ehcacheGO","userEch"));} }
  附带项目源码:http://download.csdn.net/detail/wqc19920906/9807593

0 0