热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OSCache简单例子

OSCache简单例子1.BaseCache.java基类packagecom.yanek.demo.cache.oscache;importjava.util.Date;im

OSCache简单例子

 

 

 

 

1.  BaseCache.java  基类

 

 

package com.yanek.demo.cache.oscache;

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.  CacheManager.java  管理器

 

package com.yanek.demo.cache.oscache;

public class CacheManager { 
   
    private BaseCache newsCache; 
 
     
    private static CacheManager instance; 
    private static Object lock = new Object(); 
     
    public CacheManager() { 
        //这个根据配置文件来,初始BaseCache而已; 
        newsCache = new BaseCache("news",1800);      
    } 
     
    public static CacheManager getInstance(){ 
        if (instance == null){ 
            synchronized( lock ){ 
                if (instance == null){ 
                    instance = new CacheManager(); 
                } 
            } 
        } 
        return instance; 
    } 
 
    public void putNews(News news) { 
        // TODO 自动生成方法存根 
        newsCache.put(news.getId(),news); 
    } 
 
    public void removeNews(String newsID) { 
        // TODO 自动生成方法存根 
        newsCache.remove(newsID); 
    } 
 
    public News getNews(String newsID) { 
        // TODO 自动生成方法存根 
        try { 
            return (News) newsCache.get(newsID); 
        } catch (Exception e) { 
            // TODO 自动生成 catch 块 
            System.out.println("getNews>>newsID["+newsID+"]>>"+e.getMessage()); 
           // News news = new News(newsID); 
           
            News news = new News(newsID,"aaa","bbb");
            this.putNews(news); 
            return news; 
        } 
    } 
 
    public void removeAllNews() { 
        // TODO 自动生成方法存根 
        newsCache.removeAll(); 
    } 
 

 

3. News.java  缓存的对象

 

package com.yanek.demo.cache.oscache;

public class News {

 private String id;

 private String title;

 private String content;

 
 public News(String id, String title, String content) {
  super();
  this.id = id;
  this.title = title;
  this.content = content;
 }

 public String getContent() {
  return content;
 }

 public void setContent(String content) {
  this.content = content;
 }

 public String getId() {
  return id;
 }

 public void setId(String id) {
  this.id = id;
 }

 public String getTitle() {
  return title;
 }

 public void setTitle(String title) {
  this.title = title;
 }

}

 

 

 

4. TestCache.java 测试

 

 

package com.yanek.demo.cache.oscache;

public class TestCache {

 /**
  * @param args
  */
 public static void main(String[] args) {

  
  CacheManager cm=CacheManager.getInstance();
  News n1=new News("1","111","111");
  cm.putNews(n1);
  News n1_c=cm.getNews("1");
  System.out.println("c1:"+n1_c.getContent());
  
  News n2=new News("1","111","222");
  cm.putNews(n2);
  System.out.println("c1:"+cm.getNews("1").getContent());
  
  cm.removeNews("1");
  
  System.out.println("c1:"+cm.getNews("1").getContent());
  
  BaseCache countCache = new BaseCache("count",1800);
  
  countCache.put("1100454", 10);
  countCache.put("1100455", 11);
  countCache.put("1100456", 3);
  
  try {
   Integer cachedCount = (Integer)countCache.get("1100454");

   System.out.println("cachedCount:"+cachedCount);
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  
  
  
 }

}

 

 

 


推荐阅读
  • Java EE CDI:解决依赖关系冲突的实例
    在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ... [详细]
  • MyBatis 开发技巧:延迟加载与查询缓存详解
    本文详细探讨了 MyBatis 中的延迟加载和查询缓存机制,旨在帮助开发者更好地理解和利用这些特性来优化数据库访问性能。 ... [详细]
  • 本文详细介绍了ASP.NET缓存的基本概念和使用方法,包括输出缓存、数据缓存及其高级特性,如缓存依赖、自定义缓存和缓存配置文件等。通过合理利用这些缓存技术,可以显著提升Web应用程序的性能。 ... [详细]
  • 深入解析 Golang 中的 Cache::remember 方法实现
    本文详细探讨了如何在 Golang 中实现类似于 Laravel 的 Cache::remember 方法,通过具体的代码示例和深入的分析,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在Java开发中,使用BASE64编码通常可以直接利用JDK内置的库。然而,在Android平台上,由于安全性和兼容性的考虑,直接引用JDK中的`sun.misc.BASE64Decoder`会导致错误,因此需要引入第三方库来实现相同的功能。 ... [详细]
  • 本文探讨了随着并发需求的增长,MySQL数据库架构如何从简单的单一实例发展到复杂的分布式系统,以及每一步演进背后的原理和技术解决方案。 ... [详细]
  • 本文介绍了Java中使用线程池执行器(ExecutorService)来管理和调度多线程任务的方法。通过具体的代码示例,详细解释了不同类型的线程池创建方式及其应用场景。 ... [详细]
  • Webpack中实现环境与代码的有效分离
    本文探讨了如何在Webpack中有效地区分开发与生产环境,并实现代码的合理分离,以提高项目的可维护性和加载性能。 ... [详细]
  • Eclipse 下 JavaFX 程序开发指南
    本文介绍了 JavaFX,这是一个用于创建富客户端应用程序的 Java 图形和媒体工具包,并详细说明了如何在 Eclipse 环境中配置和开发 JavaFX 应用。 ... [详细]
  • 前文|功能型_品读鸿蒙HDF架构
    前文|功能型_品读鸿蒙HDF架构 ... [详细]
  • 一、Merge语句根据条件在表中执行修改或插入数据的功能,如果插入的数据行在目的表中存在就执行UPDATE,如果是不存在则执行INSERT:-避免了单独 ... [详细]
  • Gradle复合构建详解
    自Gradle 3.3起,复合构建功能得以实现,这是一种能够整合其他独立构建的高级构建模式。本文将详细介绍复合构建与多项目构建的区别,以及如何在实际项目中应用复合构建。 ... [详细]
  • 详解 | 日志系统ViseLog的基本使用与功能
    本文详细介绍了日志系统ViseLog的使用方法及其核心功能,旨在帮助开发者更好地理解和利用这一工具,提高开发效率。 ... [详细]
  • 本文通过一个简单的Java程序示例,深入探讨了整型数据在Java中的溢出机制,以及这种机制背后的二进制补码表示法。文章不仅展示了具体的代码实现,还解释了为何加1操作会导致数值从最大值变为最小值。 ... [详细]
  • 创建一个People类,年龄,工资,性别三个属性定义一个方法叫做找对象,找对象方法传过来一个人,首先如果性别相同,就输出不是同性恋如果对方是男的,年龄小于28,工资大于1000 ... [详细]
author-avatar
王慧1019
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有