欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Ehcache基于java API实现

程序员文章站 2023-10-31 19:42:16
上代码: 顺利完毕!!! 有疑惑请留言,如若不对之处,感谢提出; ......

上代码:

  1 package com.utils.cacheutils;
  2 
  3 import com.situopenapi.constant.ehcacheconstants;
  4 import com.situopenapi.constant.gestureimageconstants;
  5 import com.situopenapi.data.systemutils.execresult;
  6 import net.sf.ehcache.cache;
  7 import net.sf.ehcache.cachemanager;
  8 import net.sf.ehcache.element;
  9 
 10 import java.util.list;
 11 
 12 /**
 13  * 使用ehcache进行数据的缓存
 14  *
 15  */
 16 public class ehcachemanager {
 17 
 18     private static cachemanager cachemanager;
 19 
 20     static {
 21         cachemanagerinit();
 22     }
 23 
 24     /**
 25      * ehcacheconstants.cache_name,                cache name
 26      * ehcacheconstants.max_elements_memory,       缓存最大个数
 27      * ehcacheconstants.whether_overflow_todisk,   内存不足时是否启用磁盘缓存
 28      * ehcacheconstants.whether_eternal,           缓存中的对象是否为永久的,如果是,超过设置将被忽略,对象从不过期
 29      * ehcacheconstants.timetoliveseconds,         缓存数据的生存时间;元素从构建到消亡的最大时间间隔值,只在元素不是永久保存时生效;若该值为0表示该元素可以停顿无穷长的时间
 30      * ehcacheconstants.timetoidleseconds          对象在失效前的允许闲置时间,仅当eternal=false对象不是永久有效时使用;可选属性,默认值是0可闲置时间无穷大;
 31      */
 32     private static cachemanager cachemanagerinit() {
 33         if (cachemanager == null) {
 34 
 35 
 36             //创建一个缓存管理器
 37             cachemanager = cachemanager.create();
 38             //建立一个缓存实例
 39             cache memoryonlycache = new cache(ehcacheconstants.cache_name, ehcacheconstants.max_elements_memory, ehcacheconstants.whether_overflow_todisk, ehcacheconstants.whether_eternal, ehcacheconstants.timetoliveseconds, ehcacheconstants.timetoidleseconds);
 40             //在内存管理器中添加缓存实例
 41             cachemanager.addcache(memoryonlycache);
 42             return cachemanager;
 43         }
 44         return cachemanager;
 45     }
 46 
 47     /**
 48      * 向缓存中添加元素
 49      *
 50      * @param key
 51      * @param value
 52      */
 53     public static void put(string ehcacheinstancename, string key, execresult<object> value) {
 54         cache cache = cachemanager.getcache(ehcacheinstancename);
 55         cache.put(new element(key, value));
 56 
 57     }
 58 
 59     /**
 60      * 根据key获取对应的value值
 61      *
 62      * @param key
 63      * @return
 64      */
 65     public static object getvalue(string ehcacheinstancename, object key) {
 66         cache cache = cachemanager.getcache(ehcacheinstancename);
 67         object value = cache.get(key).getobjectvalue();
 68         return value;
 69     }
 70 
 71     /**
 72      *获取缓存中最新的结果
 73      *
 74      * @return   最后一次添加的结果集
 75      */
 76     public static object getlastvalue(string ehcacheinstancename) {
 77         boolean flag = true;
 78         
 79             cache cache = cachemanager.getcache(ehcacheinstancename);
 80             list keys = cache.getkeys();
 81             string string = getmaxkey(keys).tostring();
 82             return getvalue(ehcacheinstancename, string);;
 83     }
 84 
 85 
 86     /**
 87      * 在缓存管理器中获取一个缓存实例
 88      * 返回缓存数据个数
 89      *
 90      * @return
 91      */
 92     public static int getcachesize(string ehcacheinstancename) {
 93         cache cache = cachemanager.getcache(ehcacheinstancename);
 94         return cache.getsize();
 95     }
 96 
 97     private static object getmaxkey(list source) {
 98 
 99         long[] target = new long[source.size() - 1];
100         for (int i = 0; i < source.size() - 1; i++) {
101             target[i] = long.parselong((string) source.get(i));
102         }
103         long maxkey = target[0];
104         for (int i = 0; i < target.length; i++) {
105             if (maxkey < target[i]) {
106                 maxkey = target[i];
107             }
108         }
109         return maxkey;
110     }
111 
112 }

顺利完毕!!!

有疑惑请留言,如若不对之处,感谢提出;