`
penchy
  • 浏览: 57840 次
  • 性别: 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

    Cache技术--OSCache JAVA开发者必须研究的cache的架构

    oscache缓存技术入门实例

    oscache缓存技术入门实例

    oscache.tld

    oscache.tld oscache.tld oscache.tld

    oscache缓存技术

    oscache缓存技术,压缩包中有详细代码及步骤

    oscache缓存技术应用

    描述了oscahce在JAVA开发中的应用和配置说明

    OSCache缓存技术

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

    oscache说明

    oscache的简单介绍

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

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

    Oscache使用手册

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

    oscache(JSP定制标记应用)

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

    OSCache简介

    oscache.properties 博文链接:https://xdjava.iteye.com/blog/1040936

    oscache-2.1.jar

    oscache-2.1.jar oscache-2.1.jar

    Oscache-入门教程.doc

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

    OSCache配置说明文档

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

    OSCache学习例子 实例

    OSCache学习例子 实例 很好的与j2ee结合

    用OSCache进行缓存对象

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

    oscache文档

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

    oscache的例子

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

    Oscache框架的搭建步骤

    使用oscache进行缓存,大大提高web系统运行效率

    oscache 使用介紹

    OSCache是OpenSymphony这个开源项目众多Projects中的一个。他是一个高效的J2EE缓存框架,能够很好的解决动态网站速度的问题。

Global site tag (gtag.js) - Google Analytics