ehcache用法的例子

  1. 一种ehcache实现缓存的方式  
[java]
  1. /** 
  2.  *  
  3.  */  
  4. package com.datang.common.cache.flat;  
  5.   
  6. import java.net.URL;  
  7. import java.util.List;  
  8.   
  9. import net.sf.ehcache.CacheManager;  
  10. import net.sf.ehcache.Ehcache;  
  11. import net.sf.ehcache.Element;  
  12.   
  13. import org.slf4j.Logger;  
  14. import org.slf4j.LoggerFactory;  
  15.   
  16. import com.datang.common.tools.util.ResourceUtils;  
  17.   
  18. /**  
  19.  * 平面缓存,按缓存名区分缓存,key-value结构  
  20.  *   
[java]  */  
  1. public abstract class FlatCache {  
  2.     /** 
  3.      * 日志 
  4.      */  
  5.     private static final Logger LOGGER = LoggerFactory  
  6.             .getLogger(FlatCache.class);  
  7.   
  8.     /** 
  9.      * 缓存配置文件 
  10.      */  
  11.     private static String CACHE_CONFIG_FILE = "config/flat_cache.xml";  
  12.   
  13.     /** 
  14.      * Ehanche的缓存管理 
  15.      */  
  16.     private static CacheManager cacheManager = null;  
  17.   
  18.     /** 
  19.      * 设置缓存配置文件,最开始设置才有效果,一旦缓存加载则不能改变 
  20.      *  
  21.      * @param cacheConfigFile 
  22.      */  
  23.     public static void setCacheConfigFile(String cacheConfigFile) {  
  24.         CACHE_CONFIG_FILE = cacheConfigFile;  
  25.     }  
  26.   
  27.     /** 
  28.      * 按缺省配置创建缓存 
  29.      *  
  30.      * @param cacheName 
  31.      */  
  32.     public static void createCache(String cacheName) {  
  33.         getCacheManager().addCache(cacheName);  
  34.     }  
  35.   
  36.     /** 
  37.      * 添加缓存 
  38.      *  
  39.      * @param cacheName 
  40.      * @param key 
  41.      * @param value 
  42.      */  
  43.     public static void put(String cacheName, String key, Object value) {  
  44.         Ehcache cache = getCacheManager().getEhcache(cacheName);  
  45.         cache.put(new Element(key, value));  
  46.     }  
  47.   
  48.     /** 
  49.      * 根据缓存名与key获取值 
  50.      *  
  51.      * @param cacheName 
  52.      * @param key 
  53.      * @return  
  54.      */  
  55.     public static Object get(String cacheName, String key) {  
  56.         Ehcache cache = getCacheManager().getEhcache(cacheName);  
  57.         Element e = cache.get(key);  
  58.         return e == null ? null : e.getObjectValue();  
  59.     }  
  60.   
  61.     /** 
  62.      * 获取缓存名 
  63.      *  
  64.      * @return  
  65.      */  
  66.     public static String[] getCacheNames() {  
  67.         return getCacheManager().getCacheNames();  
  68.     }  
  69.   
  70.     /** 
  71.      * 获取缓存的Keys 
  72.      *  
  73.      * @param cacheName 
  74.      * @return  
  75.      */  
  76.     @SuppressWarnings("unchecked")  
  77.     public static List<String> getKeys(String cacheName) {  
  78.         Ehcache cache = getCacheManager().getEhcache(cacheName);  
  79.         return (List<String>) cache.getKeys();  
  80.     }  
  81.   
  82.     /** 
  83.      * 清除所有 
  84.      */  
  85.     public static void clearAll() {  
  86.         getCacheManager().clearAll();  
  87.     }  
  88.   
  89.     /** 
  90.      * 清空指定缓存 
  91.      *  
  92.      * @param cacheName 
  93.      */  
  94.     public static void clear(String cacheName) {  
  95.         getCacheManager().getCache(cacheName).removeAll();  
  96.     }  
  97.   
  98.     /** 
  99.      * 删除指定对象 
  100.      *  
  101.      * @param cacheName 
  102.      * @param key 
  103.      * @return  
  104.      */  
  105.     public static boolean remove(String cacheName, String key) {  
  106.         return getCacheManager().getCache(cacheName).remove(key);  
  107.     }  
  108.   
  109.     /** 
  110.      * 获取缓存大小 
  111.      *  
  112.      * @param cacheName 
  113.      * @return  
  114.      */  
  115.     public static int getSize(String cacheName) {  
  116.         return getCacheManager().getCache(cacheName).getSize();  
  117.     }  
  118.   
  119.     /** 
  120.      * 获取CacheManager 
  121.      *  
  122.      * @return  
  123.      */  
  124.     private static CacheManager getCacheManager() {  
  125.         if (cacheManager != null) {  
  126.             return cacheManager;  
  127.         }  
  128.   
  129.         try {  
  130.             URL url = ResourceUtils.getResource(CACHE_CONFIG_FILE);  
  131.             cacheManager = CacheManager.create(url);  
  132.         } catch (RuntimeException e) {  
  133.             LOGGER.error("init flat cache failed", e);  
  134.             throw e;  
  135.         }  
  136.   
  137.         return cacheManager;  
  138.     }  
  139. }  

xml的配置如下:

[html]
  1. <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.          xsi:noNamespaceSchemaLocation="ehcache.xsd"  
  3.          updateCheck="true" monitoring="autodetect"  
  4.          dynamicConfig="true">  
  5.      
  6.     <defaultCache  
  7.            maxElementsInMemory="20"  
  8.            eternal="false"  
  9.            overflowToDisk="false"  
  10.            timeToIdleSeconds="1800"  
  11.            timeToLiveSeconds="1800">  
  12.     </defaultCache>  
  13.       
  14.     <cache name="CDG-CACHE"  
  15.            maxElementsInMemory="20"  
  16.            overflowToDisk="false"  
  17.            eternal="false"  
  18.            timeToIdleSeconds="1800"  
  19.            timeToLiveSeconds="1800"  
  20.            memoryStoreEvictionPolicy="LRU"  
  21.            transactionalMode="off"  
  22.      />     
  23. </ehcache>  

你可能感兴趣的:(ehcache)