用OSCache进行缓存对象编程实例
来源:优易学  2011-11-23 17:34:09   【优易学:中国教育考试门户网】   资料下载   IT书店

  1、OSCache是什么?

  OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。

  2、OSCache的特点

  (1) 缓存任何对象:你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。

  (2) 拥有全面的API:OSCache API允许你通过编程的方式来控制所有的OSCache特性。

  (3) 永久缓存:缓存能被配置写入硬盘,因此允许在应用服务器的多次生命周期间缓存创建开销昂贵的数据。

  (4) 支持集群:集群缓存数据能被单个的进行参数配置,不需要修改代码。

  (5) 缓存过期:你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不能满足需要时)。

  3、OSCache的安装与配置

  网上已经有一个不错的使用教程:http://blog.csdn.net/ezerg/archive/2004/10/14/135769.aspx

  4、有关“用OSCache进行缓存对象”的研究

  这个是我今天要说的东西。网上对于OSCache缓存Web页面很多说明和例子,但对于缓存对象方面说得不多,我就把自已写得一些东西放出来,让大家看一看是怎样缓存对象的!

  我基于GeneralCacheAdministrator类来写的BaseCache类

  view plainprint?

  package com.klstudio.cache;

  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;

  }

  }

  package com.klstudio.cache;

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

  }

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训