`
penchy
  • 浏览: 58997 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Cache技术――OSCache(四)

阅读更多

第三部分: Demo

一、对象缓存

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{   

            return this.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) {

           }

       }

    }

}
 

 

分享到:
评论

相关推荐

    Cache技术--OSCache

    【OSCache技术详解】 OSCache,全称为OpenSymphony Cache,是一款由OpenSymphony开源组织设计并开发的高效J2EE缓存框架。它被广泛应用于各种Java应用程序,包括JBoss、Hibernate和Spring等著名框架。OSCache的核心...

    oscache缓存技术入门实例

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

    oscache说明

    在 `web.xml` 中添加对 Taglib 的支持,然后在 JSP 页面中引入标签库,如 `&lt;%@ taglib uri="/WEB-INF/classes/oscache.tld" prefix="cache"%&gt;`。 3. **整个页面的缓存**:通过实现 `CacheFilter`,可以对整个页面或...

    oscache缓存技术

    **osCache缓存技术详解** osCache是一款广泛应用于Java应用程序中的开源缓存解决方案,由OpenSymphony团队开发。它提供了一种高效、可扩展的方式来管理应用程序中的数据缓存,从而提高系统的性能和响应速度。...

    OSCache学习例子 实例

    OSCache是开源的Java缓存解决方案,主要用于提高Web应用程序的性能和响应速度。它是由OpenSymphony团队开发的,能够缓存对象、SQL查询...在实践中,还可以考虑与其他技术,如Hibernate的二级缓存集成,进一步提升性能。

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

    以上就是OSCache缓存技术的基本介绍,通过理解并熟练掌握OSCache,开发者能够有效地提升应用性能,降低数据库压力,为用户带来更流畅的体验。在实践中,还需要根据具体项目需求进行优化和调整,以达到最佳的缓存效果...

    oscache.tld

    oscache.tld oscache.tld oscache.tld

    OSCache简介

    在介绍 OSCache 的详细知识之前,我们先来看一下 `oscache.properties` 文件,这是 OS Cache 配置的核心部分。 `oscache.properties` 文件是 OSCache 的配置文件,它定义了缓存的行为、策略以及各种参数。以下是...

    Oscache框架的搭建步骤

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

    OSCache缓存技术

    Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的输出结果,可以很显著的改善系统运行性能。 OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在...

    oscache缓存配置

    oscache.enable-cache-update-notification=true # 设置缓存的最大容量,当达到该值时,osCache会根据LRU(Least Recently Used)策略进行淘汰 oscache.max-element-count-in-cache=10000 # 配置缓存的序列化机制...

    oscache-java缓存框架

    - **API集成**:使用osCache提供的API进行缓存的增删改查操作,如`CacheManager.getInstance().getCache("myCache")`获取缓存实例。 4. **使用教程** - **创建缓存**:定义一个缓存,例如`Cache cache = ...

    缓存技术 oscache-2.3.2.jar包下载

    缓存技术 oscache-2.3.2.jar包下载

    OSCache配置说明文档

    例如,使用`CacheManager.getInstance().getCache("myCache")`获取名为“myCache”的缓存实例,然后进行对象的存取操作。 6. 使用示例 此处可给出具体的代码示例,展示如何创建、更新、查询和移除缓存项,以及如何...

    Oscache使用教程

    **四、优化与注意事项** 1. **缓存大小设置**:合理设定缓存大小,避免内存溢出。根据实际应用的访问模式和内存资源来确定。 2. **缓存过期策略**:根据数据更新频率和业务需求设置合理的过期时间。 3. **监控与...

    oscache(JSP定制标记应用)

    javaweb做页面缓存常用,OSCache是一个工业级的J2EE缓存实现。OSCache不但能缓存java对象,还可以缓存页面,http请求和二进制内容,...通过应用OSCache,我们不但可以实现通常的Cache功能,还能够改善系统的稳定性。

    基于OSCache的页面缓存(收藏)

    **基于OSCache的页面缓存技术详解** 在Web应用程序中,页面缓存是一种常见的优化策略,它可以显著提高网站性能,减少服务器压力,并提供更快的用户体验。OSCache是Apache软件基金会的开源项目,它是一个高性能、...

    oscache的使用实例和详解

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

Global site tag (gtag.js) - Google Analytics