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

OSCache简单例子

    博客分类:
  • Java
阅读更多
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();
  }
 
 
 
 
}

}
分享到:
评论

相关推荐

    Oscache简单实例

    3. **声明缓存**:定义需要缓存的对象,可以通过`CacheManager`获取或创建缓存实例。 4. **缓存数据**:将数据放入缓存,例如`cache.put(key, value);` 5. **获取缓存**:根据键获取缓存数据,`Object value = cache...

    OsCache实例

    10. **API 简单易用**:OsCache 提供了简单直观的API,使得开发者可以快速地在应用中集成和使用缓存功能。 在实际应用中,OsCache 可以广泛应用于各类Java项目,比如Web应用、大数据处理、分布式系统等,通过缓存...

    OSCache缓存框架的简单用法

    在Java代码中,通过`CacheManager`获取或管理缓存实例。首先,初始化`CacheManager`: ```java CacheManager cacheManager = CacheManager.create(); ``` 然后,获取或创建缓存: ```java Cache myCache = ...

    oscache对象缓存

    oscache不仅限于简单的对象缓存,还提供了集群缓存的支持。在分布式环境中,多台服务器共享同一份缓存,确保所有节点都能访问到最新的数据。通过使用JMS(Java Message Service)或RMI(Remote Method Invocation)...

    oscache2.1_ful

    **四、OSCache 应用实例** 1. **Web 应用**: 对频繁查询但变化不大的数据(如静态页面、用户信息)进行缓存,提高页面加载速度。 2. **电子商务**: 缓存商品详情、热门商品列表等,减轻数据库压力,提升购物体验。 ...

    oscache-JSP缓存

    以下是一个简单的osCache在JSP页面中的应用示例: ```jsp <%@ taglib uri="http://www.opensymphony.com/oscache" prefix="oscache" %> String key = "myCachedData"; Object data = CacheManager.getInstance()...

    OSCache简介

    3. **初始化OSCache**:在应用启动时初始化OSCache 实例。 4. **存取数据**:使用OSCache 提供的方法将数据放入缓存,并根据需要从缓存中取出数据。 5. **处理缓存失效**:根据配置的过期策略,OSCache 会自动处理...

    OSCache 资料

    3. **初始化**:在应用程序启动时初始化OSCache实例,可以使用OSCacheFactory类的getCache()方法。 4. **使用缓存**:在需要缓存数据的地方,使用OSCache提供的put()方法存入数据,get()方法取出数据。 5. **清理...

    oscache-2.3.jar

    oscache还提供了一组JSP标签,使得在Web应用中实现缓存功能变得简单直观。例如,可以使用`<oscache:cache>`标签来缓存整个JSP页面或部分内容。 五、最佳实践与注意事项 1. **合理设置缓存大小**:根据系统资源和...

    Oscache攻略

    Oscache是一款开源的、基于Java的内存缓存系统,它为应用程序提供了简单而高效的缓存解决方案。在这个攻略中,我们将深入探讨Oscache的使用方法、核心特性以及如何将其集成到你的项目中,以提升应用性能。 1. **...

    oscache工程示例

    它可能包含了一个简单的Java应用或Web项目,演示了如何配置osCache,以及如何在代码中使用缓存功能。通过运行这个示例,开发者可以直观地理解osCache的工作原理,并将其应用到自己的项目中。 总结来说,osCache工程...

    OSCache 缓存对象的总结

    OSCache 提供了丰富的API,使得集成到现有项目变得简单。例如,你可以使用`put()`方法将对象放入缓存,`get()`方法获取缓存中的对象,`remove()`方法移除特定对象,以及`clear()`方法清空整个缓存。同时,OSCache ...

    OSCache使用文档

    下面给出一个简单的JSP页面示例,展示如何使用OSCache: ```jsp *"%> <%@taglib uri="oscache" prefix="cache"%> 当前时间: ()%> <!-- 远程缓存 --> // 缓存的内容 out.println("缓存的时间为60秒"); %> ...

    oscacheTest

    **osCache小实例详解** osCache是Java世界中一个高效的缓存解决方案,它提供了一种在应用程序中存储和检索对象的方式,以减少对数据库或其他慢速资源的访问,从而提高性能。osCache不仅支持本地缓存,还可以实现...

    java页面缓冲

    6. **API友好**:OSCache提供了简单易用的API,开发者可以方便地进行缓存的插入、检索、删除和更新操作。 7. **配置灵活**:OSCache的配置文件(如`etc/oscache.properties`)允许开发者自定义缓存设置,如缓存大小...

    hibernate_5.1包

    hibernate-swarmcache:支持SwarmCache,一个简单而功能强大的分布式缓存机制。它使用IP组播来有效地在缓存的实例之间进行通信。它是快速提高集群式Web应用程序的性能的理想选择。 hibernate-proxool:支持Proxool...

    既简单又实用的log4j知识(.doc)

    6. **在代码中使用Log4j**:在需要记录日志的类中,使用`LogFactory.getLog`获取一个`Log`实例,然后调用`debug`、`info`、`warn`、`error`、`fatal`等方法记录不同级别的日志。 **理解Log4j.properties配置** `...

    Ehcache经典教程实例应用-原创

    - **简单**:其API简洁明了,易于集成到Java应用程序中。 - **多种缓存策略**:支持LRU(最近最少使用)、LFU(最不经常使用)等缓存替换策略。 - **两级缓存**:内存和磁盘,当内存满时,数据会被自动移至磁盘,...

    ssm框架整合源码,添加跨服务器上传,回显功能,添加缓存。包含数据库一个表的sql文件。

    MyBatis则是一个持久层框架,它允许开发者用简单的SQL语句来操作数据库,结合了动态SQL和面向对象编程的优点。 在这个项目中,"items.sql"文件包含了创建数据库表的SQL脚本,可能是为了快速搭建环境,预先定义了一...

Global site tag (gtag.js) - Google Analytics