OSCache(JAVA缓冲数据)简单例子

    技术2022-05-20  42

    OSCache简单例子 1.  BaseCache.java  基类 package com.yanek.demo.cache.oscache; 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;   } } } 2.  CacheManager.java  管理器 package com.yanek.demo.cache.oscache; public class CacheManager {          private BaseCache newsCache;              private static CacheManager instance;      private static Object lock = new Object();            public CacheManager() {          //这个根据配置文件来,初始BaseCache而已;          newsCache = new BaseCache("news",1800);           }            public static CacheManager getInstance(){          if (instance == null){              synchronized( lock ){                  if (instance == null){                      instance = new CacheManager();                  }              }          }          return instance;      }        public void putNews(News news) {          // TODO 自动生成方法存根          newsCache.put(news.getId(),news);      }        public void removeNews(String newsID) {          // TODO 自动生成方法存根          newsCache.remove(newsID);      }        public News getNews(String newsID) {          // TODO 自动生成方法存根          try {              return (News) newsCache.get(newsID);          } catch (Exception e) {              // TODO 自动生成 catch 块              System.out.println("getNews>>newsID["+newsID+"]>>"+e.getMessage());             // News news = new News(newsID);                          News news = new News(newsID,"aaa","bbb");             this.putNews(news);              return news;          }      }        public void removeAllNews() {          // TODO 自动生成方法存根          newsCache.removeAll();      }    }  3. News.java  缓存的对象 package com.yanek.demo.cache.oscache; public class News { private String id; private String title; private String content; public News(String id, String title, String content) {   super();   this.id = id;   this.title = title;   this.content = content; } public String getContent() {   return content; } public void setContent(String content) {   this.content = content; } public String getId() {   return id; } public void setId(String id) {   this.id = id; } public String getTitle() {   return title; } public void setTitle(String title) {   this.title = title; } } 4. TestCache.java 测试 package com.yanek.demo.cache.oscache; public class TestCache { /**   * @param args   */ public static void main(String[] args) {     CacheManager cm=CacheManager.getInstance();   News n1=new News("1","111","111");   cm.putNews(n1);   News n1_c=cm.getNews("1");   System.out.println("c1:"+n1_c.getContent());     News n2=new News("1","111","222");   cm.putNews(n2);   System.out.println("c1:"+cm.getNews("1").getContent());     cm.removeNews("1");     System.out.println("c1:"+cm.getNews("1").getContent());     BaseCache countCache = new BaseCache("count",1800);     countCache.put("1100454", 10);   countCache.put("1100455", 11);   countCache.put("1100456", 3);     try {    Integer cachedCount = (Integer)countCache.get("1100454");    System.out.println("cachedCount:"+cachedCount);   } catch (Exception e) {    // TODO Auto-generated catch block    e.printStackTrace();   }         } }


    最新回复(0)