`
lovnet
  • 浏览: 6881399 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

OSCache 学习笔记(1)__OSCache的作用 & 在项目中集成OSCache

 
阅读更多

OSCache 的应用:

1.缓存对象将一个对象以key-value的形式放入缓存中

putInCache(String key,Object content);

getFromCache(String key);

removeEntry(String key);

主要通过GeneralCacheAdministrator类来实现。

2.对局部页面进行缓存

详见:OSCache 学习笔记(2)_缓存局部页面

3.对整个页面进行缓存

用CacheFilter实现页面级缓存,可缓存单个文件、缓存URL pattern和自己设定缓存属性的缓存。

详见:OSCache 学习笔记(2)__缓存整个页面

项目中集成OSCache

1.下载OSCache http://java.net/downloads/oscache/,下载后解压。

解压后,文件如下图:


2.新建立一个web应用

3.将OSCache集成到该web项目当中

(1)从解压缩目录取得oscache.jar 文件放到 /WEB-INF/lib 下。

(2)将etc目录下的oscache.properties、oscache.tld放在src目录下(编译的时候会自动生成在WEB-INF/class目录)。

(3)修改oscache.properties中参数信息。

cache.memory设置为true,cache.memory=true

(4)修改web.xml中的信息。

<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>/WEB-INF/classes/oscache.tld</taglib-location>
</taglib>

完成上面四步,基本上完成了WEB项目中OSCache环境的搭建。

应用一:在项目中用OSCache 缓存对象

1.封装GeneralCacheAdministrator(根据需求,也可以不封装,当缓存类的一个成员来使用,就像Map一样)

BaseCache类:

public class BaseCache extends GeneralCacheAdministrator {     

	private static final long serialVersionUID = -4397192926052141162L;
	private String keyPrefix; //关键字前缀字符,区别属于哪个模块
	private int refreshPeriod; //过期时间(单位为秒);         

    public BaseCache(String keyPrefix,int refreshPeriod){    
        super();    
        this.keyPrefix = keyPrefix;    
        this.refreshPeriod = refreshPeriod;    

    }    

    /**
     *     
     * put(添加被缓存的对象)
     * @param key
     * @param value 
     * @return void
     * @createDate 2013-1-31 下午04:16:46
     * @since  1.0.0
     */
    public void put(String key,Object value){    
        this.putInCache(this.keyPrefix+"_"+key,value);    
    }    

    /**
     * remove(删除被缓存的对象)
     * @param key 
     * @return void
     * @createDate 2013-1-31 下午04:17:06
     * @since  1.0.0
     */
    public void remove(String key){    
        this.flushEntry(this.keyPrefix+"_"+key);    
    }    

    /**
     * removeAll(删除指定日期所有被缓存的对象)
     * @param date 
     * @return void
     * @createDate 2013-1-31 下午04:17:29
     * @since  1.0.0
     */
    public void removeAll(Date date){    
        this.flushAll(date);    
    }           

    /**
     * removeAll(删除所有被缓存的对象) 
     * @return void
     * @createDate 2013-1-31 下午04:18:01
     * @since  1.0.0
     */
    public void removeAll(){    
        this.flushAll();    
    }    

    /**
     * get(获取被缓存的对象)
     * @param key
     * @return
     * @throws Exception 
     * @return Object
     * @createDate 2013-1-31 下午04:18:45
     * @since  1.0.0
     */
    public Object get(String key) throws Exception{    
        try{    
            return this.getFromCache(this.keyPrefix+"_"+key,this.refreshPeriod);    
        } catch (NeedsRefreshException e) {    
            this.cancelUpdate(this.keyPrefix+"_"+key);    
            e.printStackTrace();
            throw e;
        }      
    }            
}   

2.定义自己的业务类以及业务实现类

UserCacheService.java

public interface UserCacheService {
	/**
	 * 前缀,用来区别于各个模块的缓存
	 */
	public String KEY_PREFIX="_user";
	
	/**
	 *缓存刷新的时间 
	 */
	public int REFRESH_PERIOD=3600;
	
	/**
	 * putInCache(添加用户信息到缓存中)
	 * @param userId
	 * @param user 
	 * @return void
	 * @createDate 2013-1-31 下午04:40:31
	 * @since  1.0.0
	 */
	public void putInCache(String userId,User user);
	
	/**
	 * removeFromCache(在缓存中删除该用户信息)
	 * @param userId 
	 * @return void
	 * @createDate 2013-1-31 下午04:40:58
	 * @since  1.0.0
	 */
	public void removeFromCache(String userId);
	
	/**
	 * removeAll(删除该模块的所有缓存) 
	 * @return void
	 * @createDate 2013-1-31 下午04:47:09
	 * @since  1.0.0
	 */
	public void removeAll();
	
	/**
	 * 
	 * getFromCache(根据用户ID获取缓存中的信息)
	 * @param userId 
	 * @return void
	 * @createDate 2013-1-31 下午04:41:30
	 * @since  1.0.0
	 */
	public User getFromCache(String userId);
}
UserCacheServiceImpl.java

public class UserCacheServiceImpl implements UserCacheService{
	private BaseCache cache=new BaseCache(KEY_PREFIX, REFRESH_PERIOD);
	
	@Override
	public void putInCache(String userId, User user) {
		cache.put(userId, user);
	}
	
	@Override
	public void removeFromCache(String userId) {
		cache.remove(userId);
	}
	
	@Override
	public void removeAll() {
		cache.removeAll();
	}
	
	@Override
	public User getFromCache(String userId) {
		User user=null;
		try {
			user= (User)cache.get(userId);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return user;
	}
}


应用二:OSCache 学习笔记(2)__缓存整个页面 & 缓存局部页面(链接地址)


核心Cache 管理类 GeneralCacheAdministrator的常用方法

1.void putInCache(String key,Object content);//put on Object in a cache

2.Object getFromCache(String key);// get on Object from the Cache

3.void removeEntry(String key);// remove an Object in a cache

4.void flushEntry(String key);// flushes a single cache entry

5.void flushAll();// flush the entire cache immediately

6.void cancelUpdate(String key);// cacels a pending cache update


参考文章:

1.用OSCache进行缓存对象 http://blog.csdn.net/zhifeng172/article/details/7608682

2.Cache技术――OSCache http://shijincheng0223.iteye.com/blog/1412128

分享到:
评论

相关推荐

    oscache-2.1.1-full.zip_full_oscache_oscache 2_oscache2

    osCache 可用于Web应用程序,例如在Spring框架中集成,提高数据访问效率。也可以在企业级应用中,处理大数据量的缓存需求,减少数据库压力。结合集群功能,可以构建高可用、高性能的分布式缓存系统。 总的来说,...

    OSCache学习例子 实例

    1. **添加依赖**:在项目中引入OSCache的JAR文件,通常是通过Maven或Gradle构建工具来管理依赖。 2. **配置OSCache**:创建一个`oscache.properties`配置文件,定义缓存的大小、过期策略、是否启用分布式缓存等参数...

    oscache2.1_ful

    1. **依赖集成**: 在 Maven 项目中,可以通过添加 OpenSymphony 的 OSCache 依赖来引入库。 2. **配置文件**: 使用 `oscache.xml` 文件来定制缓存配置,包括缓存大小、过期策略等。 3. **编程接口**: 通过 `...

    OSCache配置说明文档

    总结预研结果,讨论OSCache在项目中的可行性,提出可能遇到的问题及解决方案,并为后续的集成和优化工作制定计划。 通过以上内容,读者应能深入理解OSCache的工作原理,熟练掌握其配置和使用,从而在实际项目中发挥...

    Oscache框架的搭建步骤

    6. **集成到JSP页面**:在JSP页面中引入Oscache标签库,使用`&lt;%@taglib uri="oscache" prefix="cache"%&gt;`声明,其中`uri`值应与`web.xml`中配置的`&lt;taglib-uri&gt;`一致。 7. **实现缓存逻辑**:在JSP页面中利用...

    OSCache需要的包

    2. **集成到应用中**:将OSCache集成到Spring或Hibernate框架中,可以利用其自动管理缓存,比如与Session管理的集成,实现Session复制。 3. **缓存失效和刷新**:设置合适的缓存失效机制,如定时刷新、按需刷新等,...

    oscache缓存配置

    在Web应用中,osCache常与Spring框架集成,利用Spring的AOP(面向切面编程)能力实现缓存的自动化管理。通过定义Bean并使用`@Cacheable`注解,可以轻松地为特定方法开启缓存功能。 总的来说,osCache提供了强大的...

    oscache处理

    - 配置osCache插件:首先需要将osCache的jar包添加到项目类路径中,然后在struts.xml配置文件中引入osCache拦截器,并配置相应的拦截规则。 2. **iBatis与osCache**: - iBatis是一个轻量级的持久层框架,它允许...

    oscache缓存技术入门实例

    1. 添加依赖:在你的项目中引入osCache的JAR文件或通过Maven/Gradle等构建工具添加依赖。 2. 初始化缓存:在应用程序启动时初始化osCache,这通常在Servlet容器的初始化回调方法中完成。 ```java OsCacheManager ...

    oscache-java缓存框架

    osCache是Java开发中常用的缓存框架之一,它主要用于提高应用程序的性能和效率,通过将数据存储在内存中,减少对数据库的访问。osCache不仅可以用于Web应用,也可以用于任何Java应用程序,支持集群环境,提供了丰富...

    oscache的使用实例和详解

    在osCache中,缓存以“区域”(Cache Regions)的形式组织,每个区域可以存储一组相关的数据。 - **缓存项**: 存储在缓存中的单个数据单元称为缓存项,每个缓存项都有一个唯一的键(Key)和对应的值(Value)。 - ...

    oscache-2.4.1-full

    OSCache基于内存的缓存系统能够将经常访问的数据存储在内存中,避免了每次请求时都需要从数据库中获取数据的开销。通过缓存热点数据,它可以显著提升Web应用的响应速度,降低延迟,提高用户体验。 2. **JSP定制...

    oscache-2.2jar包

    对于osCache来说,这个文件可能会解释如何配置和集成osCache到项目中,以及如何解决常见问题。 3. **etc**:这个目录可能包含了配置文件,如`oscache.properties`,用于设置缓存的行为,例如缓存大小、过期策略、...

    OsCache缓存框架使用示例

    1. 引入OsCache依赖:在项目中添加OsCache的jar包或通过Maven、Gradle等构建工具配置依赖。 2. 初始化OsCache:在应用程序启动时,我们需要初始化OsCache。这通常在Spring框架中通过配置文件或者Java代码完成,设置...

    oscache详细配置文档

    2. 将解压后的 `oscache.jar` 文件添加到项目的类路径中。 3. 按照上述方法配置 `web.xml` 文件,启用 `CacheFilter`。 4. 如果需要,根据应用需求调整 `oscache.properties` 文件中的配置参数。 OSCache 还支持...

    oscache缓存技术

    通过学习这些示例,开发者可以更好地理解osCache的工作原理,并将其应用到实际项目中。 总结来说,osCache是一个强大的工具,它简化了Java应用程序的缓存管理,提高了系统性能。通过合理配置和使用,开发者可以充分...

    oscache所需jar包

    `osCache`提供了一套完整的API,允许开发者方便地集成到他们的应用中,包括添加、更新、检索和删除缓存中的对象,以及设置缓存策略,如过期时间、缓存大小限制等。 `commons-logging.jar`是Apache Commons Logging...

    oscache-2.1.jar

    oscache-2.1.jar oscache-2.1.jar

    oscache缓存

    在提供的压缩包中,`oscache-2.4.1.jar`是osCache的二进制库文件,包含了所有必要的类和资源,可以直接引入到Java项目中使用。`docs`目录可能包含osCache的API文档,帮助开发者了解和使用各个类和方法。`src`目录...

Global site tag (gtag.js) - Google Analytics