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(); } } }