osCache 简单使用

来源:互联网 发布:淘宝协商历史 编辑:程序博客网 时间:2024/05/21 06:50

Cache是一种提高系统的响应速度,改善系统的运行性能的技术.OSCache是OpenSymphony组织提供的一个J2EE架构中Web应用层的缓存技术实现组件.
主要特点
1.可选的缓存区,可以将内存,硬盘或者同时使用内存和硬盘作为缓存区.
2.多种缓存级别,包括页面部分内容或者页面级内容.
3.容错功能,当web应用和数据库之间无法进行交互时,可以使用缓存,为用户提供数据.

1:oscache文件下载

http://www.opensymphony.com/oscache/download.html,目前版本为2.4.1。可以下载 oscache-2.4.1-full文件。里面包含example。

2:解压压缩包,找到oscache.jar.放入工程。

3:基础操作工具类

import java.util.Date;import com.opensymphony.oscache.base.CacheEntry;import com.opensymphony.oscache.base.EntryRefreshPolicy;import com.opensymphony.oscache.base.NeedsRefreshException;import com.opensymphony.oscache.general.GeneralCacheAdministrator;/** * @author liuyb */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;}}/** *  * @param key * @param refreshPeriod * @return 被缓存的对象 * @throws Exception */public Object get(String key, int refreshPeriod) throws Exception {try {return this.getFromCache(this.keyPrefix + "_" + key, refreshPeriod);} catch (NeedsRefreshException e) {this.cancelUpdate(this.keyPrefix + "_" + key);throw e;}}}

4:操作使用

import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import com.opensymphony.oscache.base.NeedsRefreshException;@Componentpublic class PersonCompanyModiCached {@Autowiredprivate PersonCompanyModiSrv personCompanyModiSrv;private static Logger logger = Logger.getLogger(PersonCompanyModiCached.class);private static String PERSON_COMPANY_MODI_CACHE = "personCompanyModiCache";private static Long indexSysID = 5L;static class PersonCompanyModiCache {private static BaseCache personCompanyModiCached = null;public static BaseCache getInstance() {if (personCompanyModiCached == null) {personCompanyModiCached = new BaseCache(PERSON_COMPANY_MODI_CACHE, 3600);//秒为单位的}return personCompanyModiCached;}}public static void cleanCache() {logger.debug("CleanpersonCompanyModiCacheJob...");PersonCompanyModiCache.getInstance().removeAll();}}

PersonCompanyModiCache.getInstance().put(wpId, "1");


文中的操只是简单操作。


原创粉丝点击