Cache技术――OSCache(四)

来源:互联网 发布:济南电网待遇 知乎 编辑:程序博客网 时间:2024/06/05 16:52

 

第三部分:Demo

一、对象缓存

1Cache操作类

import java.util.Date;import com.opensymphony.oscache.base.NeedsRefreshException;import com.opensymphony.oscache.general.GeneralCacheAdministrator;public class BaseCache extends GeneralCacheAdministrator {         private int refreshPeriod; //过期时间(单位为秒);             private String keyPrefix; //关键字前缀字符;                private static final long serialVersionUID = -4397192926052141162L;            public BaseCache(String keyPrefix,int refreshPeriod){            super();            this.keyPrefix = keyPrefix;            this.refreshPeriod = refreshPeriod;        }        //添加被缓存的对象;        public void put(String key,Object value){            this.putInCache(this.keyPrefix+"_"+key,value);        }        //删除被缓存的对象;        public void remove(String key){            this.flushEntry(this.keyPrefix+"_"+key);        }        //删除所有被缓存的对象;        public void removeAll(Date date){            this.flushAll(date);        }               public void removeAll(){            this.flushAll();        }        //获取被缓存的对象;        public Object get(String key) throws Exception{            try{                return this.getFromCache(this.keyPrefix+"_"+key,this.refreshPeriod);            } catch (NeedsRefreshException e) {                this.cancelUpdate(this.keyPrefix+"_"+key);                throw e;            }          }            }   


 

2Cache管理类

publicclass CacheManager {       

   private BaseCachenewsCache;           

   privatestatic CacheManagerinstance;   

   privatestatic Objectlock =new Object();          

   private CacheManager() {   

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

       newsCache =new BaseCache("news",120);        

   }           

   publicstatic CacheManager getInstance(){   

       if (instance == null){   

           synchronized(lock ){   

               if (instance == null){   

                   instance =new CacheManager();   

               }   

           }   

       }   

       returninstance;   

   }      

 

   publicvoid removeAllNews() {   

       newsCache.removeAll();   

   }      

}

   publicvoid putUser(User news) { newsCache.put(news.getId()+"",news);     }      

   publicvoid removeUser(String newsID) { newsCache.remove(newsID);      }      

   public User getUser(int newsID) {   

       try {   

           return (User)newsCache.get(newsID+"");   

       } catch (Exception e) {   

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

           User news = new User(newsID);   

           this.putUser(news);   

           return news;   

       }   

   }      

原创粉丝点击