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

OSCache缓存技术(4)

阅读更多

第三部分: Demo

一、对象缓存

1 Cache 操作类

Java代码 复制代码
  1. import java.util.Date;   
  2.   
  3. import com.opensymphony.oscache.base.NeedsRefreshException;   
  4.   
  5. import com.opensymphony.oscache.general.GeneralCacheAdministrator;   
  6.   
  7. public class BaseCache extends GeneralCacheAdministrator {       
  8.   
  9.     private int refreshPeriod; //过期时间(单位为秒);           
  10.   
  11.     private String keyPrefix; //关键字前缀字符;               
  12.   
  13.     private static final long serialVersionUID = -4397192926052141162L;          
  14.   
  15.     public BaseCache(String keyPrefix,int refreshPeriod){      
  16.   
  17.         super();      
  18.   
  19.         this.keyPrefix = keyPrefix;      
  20.   
  21.         this.refreshPeriod = refreshPeriod;      
  22.   
  23.     }      
  24.   
  25.     //添加被缓存的对象;      
  26.   
  27.     public void put(String key,Object value){      
  28.   
  29.         this.putInCache(this.keyPrefix+"_"+key,value);      
  30.   
  31.     }      
  32.   
  33.     //删除被缓存的对象;      
  34.   
  35.     public void remove(String key){      
  36.   
  37.         this.flushEntry(this.keyPrefix+"_"+key);      
  38.   
  39.     }      
  40.   
  41.     //删除所有被缓存的对象;      
  42.   
  43.     public void removeAll(Date date){      
  44.   
  45.         this.flushAll(date);      
  46.   
  47.     }             
  48.   
  49.     public void removeAll(){      
  50.   
  51.         this.flushAll();      
  52.   
  53.     }      
  54.   
  55.     //获取被缓存的对象;      
  56.   
  57.     public Object get(String key) throws Exception{      
  58.   
  59.         try{      
  60.   
  61.             return this.getFromCache(this.keyPrefix+"_"+key,this.refreshPeriod);      
  62.   
  63.         } catch (NeedsRefreshException e) {      
  64.   
  65.             this.cancelUpdate(this.keyPrefix+"_"+key);      
  66.   
  67.             throw e;      
  68.   
  69.         }        
  70.   
  71.     }              
  72.   
  73. }     
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 管理类

 

Java代码 复制代码
  1. public class CacheManager {          
  2.   
  3.     private BaseCache newsCache;              
  4.   
  5.     private static CacheManager instance;      
  6.   
  7.     private static Object lock = new Object();             
  8.   
  9.     private CacheManager() {      
  10.   
  11.         //这个根据配置文件来,初始BaseCache而已;      
  12.   
  13.         newsCache = new BaseCache("news",120);           
  14.   
  15.     }              
  16.   
  17.     public static CacheManager getInstance(){      
  18.   
  19.         if (instance == null){      
  20.   
  21.             synchronized( lock ){      
  22.   
  23.                 if (instance == null){      
  24.   
  25.                     instance = new CacheManager();      
  26.   
  27.                 }      
  28.   
  29.             }      
  30.   
  31.         }      
  32.   
  33.         return instance;      
  34.   
  35.     }         
  36.   
  37.     public void putUser(User news) { newsCache.put(news.getId()+"",news);      }         
  38.   
  39.     public void removeUser(String newsID) {  newsCache.remove(newsID);       }         
  40.   
  41.     public User getUser(int newsID) {      
  42.   
  43.         try {      
  44.   
  45.             return (User) newsCache.get(newsID+"");      
  46.   
  47.         } catch (Exception e) {      
  48.   
  49.             System.out.println("getNews>>newsID["+newsID+"]>>"+e.getMessage());      
  50.   
  51.             User news = new User(newsID);      
  52.   
  53.             this.putUser(news);      
  54.   
  55.             return news;      
  56.   
  57.         }      
  58.   
  59.     }         
  60.   
  61.     public void removeAllNews() {      
  62.   
  63.         newsCache.removeAll();      
  64.   
  65.     }         
  66.   
  67. }  
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

 

Java代码 复制代码
  1. public class User {   
  2.   
  3.     private int id;   
  4.   
  5.     private String name;   
  6.   
  7.     private String sex;   
  8.   
  9.     private int age;   
  10.   
  11.     private Date accessTime; public User(int id) {   
  12.   
  13.        super();   
  14.   
  15.        this.id = id;   
  16.   
  17.        this.accessTime = new Date(System.currentTimeMillis());   
  18.   
  19.     }   
  20.   
  21.     public String toString() {   
  22.   
  23.        return "User info is : id=" + id + "  accessTime="  
  24.   
  25.               + accessTime.toString();   
  26.   
  27.     }   
  28.   
  29.     public User(String name, String sex, int age) {   
  30.   
  31.        super();   
  32.   
  33.        this.name = name;   
  34.   
  35.        this.sex = sex;   
  36.   
  37.        this.age = age;   
  38.   
  39.     }   
  40.   
  41.     public User() {   
  42.   
  43.     }   
  44.   
  45.     public int getAge() {   
  46.   
  47.        return age;   
  48.   
  49.     }   
  50.   
  51.     public void setAge(int age) {   
  52.   
  53.        this.age = age;   
  54.   
  55.     }   
  56.   
  57.     public String getName() {   
  58.   
  59.        return name;   
  60.   
  61.     }   
  62.   
  63.     public void setName(String name) {   
  64.   
  65.        this.name = name;   
  66.   
  67.     }   
  68.   
  69.     public String getSex() {   
  70.   
  71.        return sex;   
  72.   
  73.     }   
  74.   
  75.     public void setSex(String sex) {   
  76.   
  77.        this.sex = sex;   
  78.   
  79.     }   
  80.   
  81.     public int getId() {   
  82.   
  83.        return id;   
  84.   
  85.     }   
  86.   
  87.     public void setId(int id) {   
  88.   
  89.        this.id = id;   
  90.   
  91.     }   
  92.   
  93.     public Date getAccessTime() {   
  94.   
  95.        return accessTime;   
  96.   
  97.     }   
  98.   
  99.     public void setAccessTime(Date accessTime) {   
  100.   
  101.        this.accessTime = accessTime;   
  102.   
  103.     }   
  104.   
  105. }  
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 、测试类

 

Java代码 复制代码
  1. public class TestObjectCache {   
  2.   
  3.     public static void main(String[] args) {   
  4.   
  5.        CacheManager cm=CacheManager.getInstance();   
  6.   
  7.          
  8.   
  9.        TestObjectCache test=new TestObjectCache();   
  10.   
  11.        test.print(cm);   
  12.   
  13.     }   
  14.   
  15.       
  16.   
  17.     public void print(CacheManager cm){   
  18.   
  19.        User user=null;   
  20.   
  21.        for (int i = 0; i < 1000; i++) {   
  22.   
  23.            user=cm.getUser(100);   
  24.   
  25.            System.out.println("<<"+i+">>: "+user);            
  26.   
  27.            if(i==10){   
  28.   
  29.               //删除缓存id的对象   
  30.   
  31.               cm.removeUser(100+"");   
  32.   
  33.            }            
  34.   
  35.            if(i==20){   
  36.   
  37.               //删除所有缓存的对象   
  38.   
  39.               cm.removeAllNews();   
  40.   
  41.            }            
  42.   
  43.            // 睡眠部分   
  44.   
  45.            try {   
  46.   
  47.               Thread.sleep(30000);   
  48.   
  49.            } catch (Exception e) {   
  50.   
  51.            }   
  52.   
  53.        }   
  54.   
  55.     }   
  56.   
  57. }  
分享到:
评论

相关推荐

    oscache缓存技术

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

    oscache缓存技术应用

    **oscache缓存技术应用** **一、OSCache简介与应用** Cache技术是提升系统响应速度和性能的关键手段,尤其在Web应用中,通过缓存页面的输出结果,能够显著提高系统性能。OSCache是由OpenSymphony开发的一种创新...

    oscache缓存技术入门实例

    4. 缓存同步:在多线程或多服务器环境下,osCache提供了一套机制来确保缓存数据的一致性和完整性。 三、osCache配置 osCache的配置主要通过XML文件完成,包括缓存配置、更新策略、缓存监听器等。例如: ```xml ...

    OsCache缓存框架使用示例

    在压缩包中的文件,如`servlet+天气预报+缓存技术`,可能包含了一个完整的示例项目,包括了上述步骤的代码实现。你可以直接运行该项目,通过查看和分析代码来深入理解OsCache的使用方式。 总结来说,OsCache是一个...

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

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

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

    - 在Web应用中,可以利用OSCache缓存JSP页面、EJB会话bean、Hibernate查询结果等,减少服务器负载。 - 在服务端,可以缓存经常访问的API响应,提升响应速度,改善用户体验。 - 结合Spring框架,可以通过AOP(面向...

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

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

    OSCache缓存技术

    Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的输出...OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。

    OSCache 缓存对象的总结

    4. **缓存同步**:在多线程或多服务器环境下,OSCache 提供了缓存同步机制,确保了在并发操作下的数据一致性。 5. **缓存分区**:OSCache 支持将缓存划分为多个分区,每个分区可以有不同的配置,这有助于管理和优化...

    OSCache缓存jsp例子

    缓存是一种存储技术,用于临时存储频繁访问的数据,以便快速检索。在Web开发中,JSP页面缓存可以减少服务器对数据库的查询次数,从而减少服务器负载和提高用户访问速度。 OSCache 提供了对Java对象的缓存管理功能,...

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

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

    oscache-java缓存框架

    - **缓存**:缓存是一种技术,用于临时存储频繁访问的数据,以便快速响应用户的请求,减少系统处理时间和资源消耗。 - **Java缓存框架**:在Java环境中,缓存框架如osCache提供了一套完整的解决方案,帮助开发者...

    oscache对象缓存

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

    oscache-JSP缓存

    **osCache - JSP缓存技术详解** osCache是由OpenSymphony开源组织开发的一个高效、易用的缓存解决方案,特别适用于Java Web应用程序,尤其是JSP页面。它为开发者提供了一种在JSP页面内部实现快速内存缓存的机制,...

    hibernate+oscache实现二级缓存实例

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

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

    配置OScache主要包括设置缓存策略、缓存范围以及缓存失效策略等。 【Freemarker模板】 Freemarker是一个基于模板的Java模板引擎,用于生成动态内容。它与SpringMVC配合使用,可以方便地生成HTML页面。开发者编写...

    OSCache学习例子 实例

    4. **使用OSCache**:将需要缓存的对象放入OSCache,例如: ```java Object object = ...; Cache cache = CacheManager.getInstance().getCache("myCache"); cache.put(new Element("key", object)); ``` 5. *...

    oscache的使用实例和详解

    - **缓存**: 缓存是一种存储技术,用于暂时存储常用数据,以便快速访问。在osCache中,缓存以“区域”(Cache Regions)的形式组织,每个区域可以存储一组相关的数据。 - **缓存项**: 存储在缓存中的单个数据单元...

    Oscache框架的搭建步骤

    在现代Web开发中,缓存技术是提升系统响应速度、优化用户体验的关键策略之一。Oscache框架作为一种高效、灵活的缓存解决方案,在Java Web应用,尤其是JSP环境中,提供了强大的缓存管理功能。本文将深入探讨Oscache...

    基于OSCache的页面缓存

    【基于OSCache的页面缓存】是Web应用中一种有效的性能优化策略,它涉及到缓存技术、分布式系统以及系统开发等多个领域。OSCache是开源的Java缓存框架,能够帮助开发者实现高效的页面和数据缓存,从而降低数据库的...

Global site tag (gtag.js) - Google Analytics