`
benx
  • 浏览: 276304 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oscache 对象缓存 转

阅读更多
一、对象缓存
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对象缓存

    《oscache对象缓存详解》 在IT领域中,缓存技术是提高系统性能的关键一环,尤其是在高并发、大数据量的应用场景下。oscache,全称OpenSymphony OSCache,是一个广泛使用的开源Java对象缓存框架,它允许开发者将数据...

    用OSCache进行缓存对象

    1、OSCache是什么? 2、OSCache的特点 3、有关“用OSCache进行缓存对象”的研究

    OsCache缓存框架使用示例

    3. 创建缓存对象:在需要缓存数据的地方,创建OsCache实例并指定缓存名称。例如,可以创建一个名为`weatherCache`的缓存,用于存储天气信息。 4. 存储数据:当获取到新的天气信息时,将其存储到OsCache中,键为城市...

    oscache缓存技术

    osCache的核心功能包括缓存对象、缓存区域管理、缓存过期策略以及支持分布式缓存等。 ### 1. osCache的基本概念 - **缓存对象**:osCache允许开发者将任何Java对象存储到缓存中,以便后续请求可以直接从内存中获取...

    OSCache 缓存对象的总结

    OSCache 是一个开源的缓存解决方案,主要用于Java应用程序,它提供了高效的对象缓存功能,能够显著提高应用的性能。在本文中,我们将深入探讨OSCache的核心特性、工作原理以及如何在实际项目中有效利用它。 OSCache...

    SSM的整合+OScache页面缓存+freemark模板

    OScache是Java的一个开源缓存框架,它可以用来缓存任何Java对象,包括页面。在SSM项目中引入OScache,可以在服务器端对经常访问的页面进行缓存,提高页面加载速度,减轻服务器压力。配置OScache主要包括设置缓存策略...

    oscache-java缓存框架

    - **对象缓存**:osCache允许开发者将Java对象直接放入缓存,便于快速检索。 - **内存管理**:自动管理内存,当内存不足时,可基于LRU(Least Recently Used)策略进行对象的淘汰。 - **持久化**:支持缓存数据的...

    osCache,缓存

    它由OpenSymphony开源组织开发,旨在提供内存中的对象缓存服务,以提升应用性能并减轻数据库负载。osCache的核心功能是将频繁访问的数据存储在内存中,避免了反复从数据库读取,从而显著提高了应用程序的响应速度。 ...

    oscache缓存技术入门实例

    它支持缓存对象、集合、Map等各种数据类型,并提供了缓存过期、刷新策略等高级特性。 二、osCache工作原理 1. 数据存储:osCache将数据存储在内存中的缓存区域,这些区域可以被细分为多个缓存,每个缓存有自己的...

    oscache缓存配置

    osCache的核心功能是提供了一个内存中的对象缓存系统,通过将常用数据暂存到内存中,避免了频繁的数据库查询,从而显著提升应用程序的性能。 在开始配置osCache之前,我们需要了解其基本概念和工作原理。osCache...

    OSCache缓存技术(6)【实例】

    OSCache支持对象级别的缓存,也就是说,它可以缓存任何Java对象,并提供了自动过期和更新策略,确保数据的实时性。 在OSCache中,缓存管理主要通过`Cache`接口实现。开发者可以创建并初始化一个`Cache`实例,然后将...

    oscache-JSP缓存

    osCache是一个基于Java的缓存框架,主要针对JSP页面和Java对象的缓存。它通过将常用的数据存储在内存中,避免了频繁的数据库查询或计算,从而降低了服务器负载,提高了响应速度。osCache支持缓存页面片段、整个页面...

    OSCache缓存框架的简单用法

    OSCache的核心特性包括缓存对象的自动过期、内存管理策略、缓存同步以及丰富的API。 **2. 安装与依赖** 首先,你需要将OSCache的JAR文件添加到项目的类路径中。你可以从OpenSymphony的官方网站或者Maven仓库下载...

    OSCache缓存jsp例子

    OSCache 提供了对Java对象的缓存管理功能,包括缓存对象的存储、检索、更新和过期策略等。它支持多种缓存策略,如LRU(Least Recently Used)最近最少使用、FIFO(First In First Out)先进先出等。在JSP页面缓存中...

    oscache缓存

    osCache是Java平台上的一个高效的缓存解决方案,主要用于在应用程序中缓存数据,以提高性能和减少数据库的负载。这个工具特别适用于那些需要频繁访问但更新不频繁的数据,例如经常查询但很少更改的数据库记录。...

    Hibernate OSCache缓存

    **Hibernate OSCache缓存详解** Hibernate 是一个流行的Java ORM(对象关系映射)框架,它允许开发者以面向对象的方式操作数据库。为了提高性能,Hibernate 提供了缓存机制,其中 OSCache 是一种广泛使用的二级缓存...

    一个OSCache缓存技术的关键zip包

    OSCache 是一款开源的缓存解决方案,主要用于Java应用程序,它能显著提高应用性能,通过缓存数据、对象和查询结果来减少对数据库的访问。这个关键的zip包包含了一些核心的OSCache组件和相关的文档,下面我们将深入...

    hibernate+oscache实现二级缓存实例

    为了提高系统性能,通常会采用缓存技术来减少对数据库的直接访问,而OSCache就是一种广泛使用的开源缓存解决方案。本实例将介绍如何结合Hibernate和OSCache实现二级缓存,以优化应用程序的性能。 一级缓存是...

Global site tag (gtag.js) - Google Analytics