一、对象缓存
1、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{
returnthis.getFromCache(this.keyPrefix+"_"+key,this.refreshPeriod);
} catch (NeedsRefreshException e) {
this.cancelUpdate(this.keyPrefix+"_"+key);
throw e;
}
}
}
2、Cache管理类
public class CacheManager {
private BaseCache newsCache;
private static CacheManager instance;
private static Object lock = new Object();
private CacheManager() {
//这个根据配置文件来,初始BaseCache而已;
newsCache = new BaseCache("news",120);
}
public static CacheManager getInstance(){
if (instance == null){
synchronized( lock ){
if (instance == null){
instance = new CacheManager();
}
}
}
return instance;
}
public void putUser(User news) { newsCache.put(news.getId()+"",news); }
public void removeUser(String newsID) { newsCache.remove(newsID); }
public User getUser(int newsID) {
try {
return (User) newsCache.get(newsID+"");
} catch (Exception e) {
System.out.println("getNews>>newsID["+newsID+"]>>"+e.getMessage());
User news = new User(newsID);
this.putUser(news);
return news;
}
}
public void removeAllNews() {
newsCache.removeAll();
}
}
3、对象Bean
public class User {
private int id;
private String name;
private String sex;
private int age;
private Date accessTime; public User(int id) {
super();
this.id = id;
this.accessTime = new Date(System.currentTimeMillis());
}
public String toString() {
return "User info is : id=" + id + " accessTime="
+ accessTime.toString();
}
public User(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
public User() {
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getAccessTime() {
return accessTime;
}
public void setAccessTime(Date accessTime) {
this.accessTime = accessTime;
}
}
4、测试类
public class TestObjectCache {
public static void main(String[] args) {
CacheManager cm=CacheManager.getInstance();
TestObjectCache test=new TestObjectCache();
test.print(cm);
}
public void print(CacheManager cm){
User user=null;
for (int i = 0; i < 1000; i++) {
user=cm.getUser(100);
System.out.println("<<"+i+">>: "+user);
if(i==10){
//删除缓存id的对象
cm.removeUser(100+"");
}
if(i==20){
//删除所有缓存的对象
cm.removeAllNews();
}
// 睡眠部分
try {
Thread.sleep(30000);
} catch (Exception e) {
}
}
}
}
分享到:
相关推荐
《oscache对象缓存详解》 在IT领域中,缓存技术是提高系统性能的关键一环,尤其是在高并发、大数据量的应用场景下。oscache,全称OpenSymphony OSCache,是一个广泛使用的开源Java对象缓存框架,它允许开发者将数据...
1、OSCache是什么? 2、OSCache的特点 3、有关“用OSCache进行缓存对象”的研究
3. 创建缓存对象:在需要缓存数据的地方,创建OsCache实例并指定缓存名称。例如,可以创建一个名为`weatherCache`的缓存,用于存储天气信息。 4. 存储数据:当获取到新的天气信息时,将其存储到OsCache中,键为城市...
osCache的核心功能包括缓存对象、缓存区域管理、缓存过期策略以及支持分布式缓存等。 ### 1. osCache的基本概念 - **缓存对象**:osCache允许开发者将任何Java对象存储到缓存中,以便后续请求可以直接从内存中获取...
OSCache 是一个开源的缓存解决方案,主要用于Java应用程序,它提供了高效的对象缓存功能,能够显著提高应用的性能。在本文中,我们将深入探讨OSCache的核心特性、工作原理以及如何在实际项目中有效利用它。 OSCache...
OScache是Java的一个开源缓存框架,它可以用来缓存任何Java对象,包括页面。在SSM项目中引入OScache,可以在服务器端对经常访问的页面进行缓存,提高页面加载速度,减轻服务器压力。配置OScache主要包括设置缓存策略...
- **对象缓存**:osCache允许开发者将Java对象直接放入缓存,便于快速检索。 - **内存管理**:自动管理内存,当内存不足时,可基于LRU(Least Recently Used)策略进行对象的淘汰。 - **持久化**:支持缓存数据的...
它由OpenSymphony开源组织开发,旨在提供内存中的对象缓存服务,以提升应用性能并减轻数据库负载。osCache的核心功能是将频繁访问的数据存储在内存中,避免了反复从数据库读取,从而显著提高了应用程序的响应速度。 ...
它支持缓存对象、集合、Map等各种数据类型,并提供了缓存过期、刷新策略等高级特性。 二、osCache工作原理 1. 数据存储:osCache将数据存储在内存中的缓存区域,这些区域可以被细分为多个缓存,每个缓存有自己的...
osCache的核心功能是提供了一个内存中的对象缓存系统,通过将常用数据暂存到内存中,避免了频繁的数据库查询,从而显著提升应用程序的性能。 在开始配置osCache之前,我们需要了解其基本概念和工作原理。osCache...
OSCache支持对象级别的缓存,也就是说,它可以缓存任何Java对象,并提供了自动过期和更新策略,确保数据的实时性。 在OSCache中,缓存管理主要通过`Cache`接口实现。开发者可以创建并初始化一个`Cache`实例,然后将...
osCache是一个基于Java的缓存框架,主要针对JSP页面和Java对象的缓存。它通过将常用的数据存储在内存中,避免了频繁的数据库查询或计算,从而降低了服务器负载,提高了响应速度。osCache支持缓存页面片段、整个页面...
OSCache的核心特性包括缓存对象的自动过期、内存管理策略、缓存同步以及丰富的API。 **2. 安装与依赖** 首先,你需要将OSCache的JAR文件添加到项目的类路径中。你可以从OpenSymphony的官方网站或者Maven仓库下载...
OSCache 提供了对Java对象的缓存管理功能,包括缓存对象的存储、检索、更新和过期策略等。它支持多种缓存策略,如LRU(Least Recently Used)最近最少使用、FIFO(First In First Out)先进先出等。在JSP页面缓存中...
osCache是Java平台上的一个高效的缓存解决方案,主要用于在应用程序中缓存数据,以提高性能和减少数据库的负载。这个工具特别适用于那些需要频繁访问但更新不频繁的数据,例如经常查询但很少更改的数据库记录。...
**Hibernate OSCache缓存详解** Hibernate 是一个流行的Java ORM(对象关系映射)框架,它允许开发者以面向对象的方式操作数据库。为了提高性能,Hibernate 提供了缓存机制,其中 OSCache 是一种广泛使用的二级缓存...
OSCache 是一款开源的缓存解决方案,主要用于Java应用程序,它能显著提高应用性能,通过缓存数据、对象和查询结果来减少对数据库的访问。这个关键的zip包包含了一些核心的OSCache组件和相关的文档,下面我们将深入...
为了提高系统性能,通常会采用缓存技术来减少对数据库的直接访问,而OSCache就是一种广泛使用的开源缓存解决方案。本实例将介绍如何结合Hibernate和OSCache实现二级缓存,以优化应用程序的性能。 一级缓存是...