用OSCache进行缓存对象

    1. package com.klstudio.cache;  

    2.   

    3. import java.util.Date;  

    4.   

    5. import com.opensymphony.oscache.base.NeedsRefreshException;  

    6. import com.opensymphony.oscache.general.GeneralCacheAdministrator;  

    7.   

    8. public class BaseCache extends GeneralCacheAdministrator {  

    9.      //过期时间(单位为秒);  

  10.      private int refreshPeriod;  

  11.      //关键字前缀字符;  

  12.      private String keyPrefix;  

  13.        

  14.      private static final long serialVersionUID = -4397192926052141162L;  

  15.        

  16.      public BaseCache(String keyPrefix,int refreshPeriod){  

  17.          super();  

  18.          this.keyPrefix = keyPrefix;  

  19.          this.refreshPeriod = refreshPeriod;  

  20.      }  

  21.      //添加被缓存的对象;  

  22.      public void put(String key,Object value){  

  23.          this.putInCache(this.keyPrefix+"_"+key,value);  

  24.      }  

  25.      //删除被缓存的对象;  

  26.      public void remove(String key){  

  27.          this.flushEntry(this.keyPrefix+"_"+key);  

  28.      }  

  29.      //删除所有被缓存的对象;  

  30.      public void removeAll(Date date){  

  31.          this.flushAll(date);  

  32.      }  

  33.        

  34.      public void removeAll(){  

  35.          this.flushAll();  

  36.      }  

  37.      //获取被缓存的对象;  

  38.      public Object get(String key) throws Exception{  

  39.          try{  

  40.              return this.getFromCache(this.keyPrefix+"_"+key,this.refreshPeriod);  

  41.          } catch (NeedsRefreshException e) {  

  42.              this.cancelUpdate(this.keyPrefix+"_"+key);  

  43.              throw e;  

  44.          }  

  45.   

  46.      }  

  47.        

  48. }  

   

view plainprint?

    1. package com.klstudio;  

    2.   

    3. import com.klstudio.News;  

    4. import com.klstudio.cache.BaseCache;  

    5.   

    6. public class CacheManager {  

    7.        

    8.      private BaseCache newsCache;  

    9.   

  10.        

  11.      private static CacheManager instance;  

  12.      private static Object lock = new Object();  

  13.        

  14.      public CacheManager() {  

  15.          //这个根据配置文件来,初始BaseCache而已;  

  16.          newsCache = new BaseCache("news",1800);        

  17.      }  

  18.        

  19.      public static CacheManager getInstance(){  

  20.          if (instance == null){  

  21.              synchronized( lock ){  

  22.                  if (instance == null){  

  23.                      instance = new CacheManager();  

  24.                  }  

  25.              }  

  26.          }  

  27.          return instance;  

  28.      }  

  29.   

  30.      public void putNews(News news) {  

  31.          // TODO 自动生成方法存根  

  32.          newsCache.put(news.getID(),news);  

  33.      }  

  34.   

  35.      public void removeNews(String newsID) {  

  36.          // TODO 自动生成方法存根  

  37.          newsCache.remove(newsID);  

  38.      }  

  39.   

  40.      public News getNews(String newsID) {  

  41.          // TODO 自动生成方法存根  

  42.          try {  

  43.              return (News) newsCache.get(newsID);  

  44.          } catch (Exception e) {  

  45.              // TODO 自动生成 catch 块  

  46.              System.out.println("getNews>>newsID["+newsID+"]>>"+e.getMessage());  

  47.              News news = new News(newsID);  

  48.              this.putNews(news);  

  49.              return news;  

  50.          }  

  51.      }  

  52.   

  53.      public void removeAllNews() {  

  54.          // TODO 自动生成方法存根  

  55.          newsCache.removeAll();  

  56.      }  

  57.   

  58. } 

你可能感兴趣的:(cache)