上代碼: 順利完畢!!! 有疑惑請留言,如若不對之處,感謝提出; ...
上代碼:
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 }
順利完畢!!!
有疑惑請留言,如若不對之處,感謝提出;