`
caojianlong2004
  • 浏览: 2054 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

JCS和EHCACHE

阅读更多
最近项目中需要使用Cache来控制程序运行中占用内存大小, 搜索了一下, JCS和Ehcache使用比较简单.
Java 缓存系统(Java Caching System,JCS)
是一个用于 Java 应用程序的强大分布式缓存系统,它是拥有简单 API 的高度可配置的工具。具体使用方法如下:
首先需要一个重要的配置文件, cache.ccf
基本配置:
jcs.default=jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
该配置文件将内存缓存指定为一个 LRUMemoryCache 。还可以看到,内存中能保存的对象的最大数量被设置为 1000 。
JCS 配置中定义的区域:
jcs.default=DISK_REGION
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache

jcs.region.OUR_REGION=DISK_REGION
jcs.region.OUR_REGION.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.OUR_REGION.cacheattributes.MaxObjects=1000
jcs.region.OUR_REGION.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.OUR_REGION.cacheattributes.UseMemoryShrinker=true
jcs.region.OUR_REGION.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.region.OUR_REGION.cacheattributes.ShrinkerIntervalSeconds=60
jcs.region.OUR_REGION.cacheattributes.MaxSpoolPerRun=500
jcs.region.OUR_REGION.elementattributes=org.apache.jcs.engine.ElementAttributes
jcs.region.OUR_REGION.elementattributes.IsEternal=false

jcs.auxiliary.DISK_REGION=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DISK_REGION.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DISK_REGION.attributes.DiskPath=c:/jcs/disk_region
jcs.auxiliary.DISK_REGION.attributes.maxKeySize=100000

第一行表明该配置将默认区域设置为 DISK_REGION 。DISK_REGION 是 IndexedDiskCacheFactory 类型,并且该文件在磁盘上指定为 c:\jcs\disk_region。第二个配置组定义了我自己的区域,我为它添加了一些选项,这种类型的配置(在指定用户定义区域时同时使用内存区域和磁盘区域)是很常见的。第 3 个配置组定义了一个 辅助区域 。
JCS 有两个依赖项:concurrent 和 commons-logging (JCS 1.2.7.0 之前的版本中,还有两个其他依赖项:commons-collections 和 commons-lang )。

JCS 的基本用法:
Initialize the JCS object and get an instance of the default cache region
JCS cache = JCS.getInstance("default");
JCS 实例后,可以调用最需要的方法。put 方法将一个新对象放入缓存中。接下来只需一个 key (第一个参数)和一个 value (第二个参数):
cache.put(key, value);
检索缓存对象只使用 JCS 提供的 get 方法:
cache.get(key);
清除缓存区域:
// Dispose of a specific cached item
cache.remove(key);

// Dispose of all cache data
cache.clear();

// Dispose of the cache region
cache.dispose();
在使用JCS时候, 我们经常会把对象放入缓存中, 这里需要注意要实现序列化.

EHCache使用简介
EHCache 是一个纯java的,在Hibernate2.1充当可插入的的在进程中的缓存,它具有以下缓存,最小的依赖性,全面的文特性:快速,简单,丰富的文档和测试用例。
官方网站 http://ehcache.sourceforge.net/
在使用EhCache也需要一个配置文件,  但现在版本你也可以不需要配置文件, 在创建Cache时候传一些配置值给它就可以了.
首先需要创建一个CacheManager 对象, 有四种方式:
方法一, 默认配置文件创建:
CacheManager manager = CacheManager.create();
方法二, 使用指定配置文件创建:
CacheManager manager = CacheManager.create("src/config/ehcache.xml");
方法三, 从classpath找寻配置文件并创建:
URL url = getClass().getResource("/anotherconfigurationname.xml");
CacheManager manager = CacheManager.create(url);
方法四, 通过输入流创建:
InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath());
     try {
         CacheManager manager = CacheManager.create(fis);
     } finally {
        fis.close();
    }
卸载CacheManager ,关闭Cache

manager.shutdown();

使用Caches

取得配置文件中预先 定义的sampleCache1设置,生成一个Cache
Cache cache = manager.getCache("sampleCache1");

设置一个名为test 的新cache,test属性为默认
CacheManager manager = CacheManager.create();
manager.addCache("test");

设置一个名为test 的新cache,并定义其属性
CacheManager manager = CacheManager.create();
Cache cache = new Cache("test", 1, true, false, 5, 2);
manager.addCache(cache);

往cache中加入元素
Element element = new Element("key1", "value1");
cache.put(new Element(element);

从cache中取得元素
Element element = cache.get("key1");


Cache 属性说明:
构造函数:
public Cache(java.lang.String name, int maxElementsInMemory, boolean overflowToDisk,  boolean eternal, long timeToLiveSeconds, long timeToIdleSeconds)
参数说明:
name - 元素名字。
maxElementsInMemory - 设定内存中创建对象的最大值。
overflowToDisk - 设置当内存中缓存达到 maxInMemory 限制时元素是否可写到磁盘上。
eternal - 设置元素(译注:内存中对象)是否永久驻留。如果是,将忽略超时限制且元素永不消亡。
timeToIdleSeconds  - 设置某个元素消亡前的停顿时间。也就是在一个元素消亡之前,两次访问时间的最大时间间隔值。这只能在元素不是永久驻留时有效(译注:如果对象永恒不灭,则 设置该属性也无用)。 如果该值是 0 就意味着元素可以停顿无穷长的时间。
timeToLiveSeconds - 为元素设置消亡前的生存时间。也就是一个元素从构建到消亡的最大时间间隔值。这只能在元素不是永久驻留时有效。

ehcache.xml配置文件中的属性和构造方法里面意思一样.
分享到:
评论

相关推荐

    本地缓存(一)ehcache/jcs/cache4j/jcs的性能测试与使用场景分析

    本文将主要探讨本地缓存的几个常见实现,包括Ehcache、JCS(Java Caching System)和Cache4j,并进行性能测试,同时分析它们各自适用的使用场景。 首先,Ehcache是一个广泛使用的开源Java缓存解决方案,它提供了...

    shiftone-cache swarmcache ehcache jcs 源码

    本文将深入探讨四种知名的缓存解决方案:ShiftOne Cache、SwarmCache、EHCache以及JCS(Java Caching System),并分析它们的源码,以理解其工作原理和优化策略。 首先,让我们来看看ShiftOne Cache。这是一个轻量...

    ehcache缓存

    相较于Guava Cache和JCS(Java Caching System),Ehcache提供了更丰富的特性,如分布式缓存、磁盘存储和更完善的API。然而,对于轻量级应用,Guava Cache可能更为简洁高效。 **五、最佳实践** 1. **合理设置缓存...

    一个简单jcs实例,一看就会的程序

    同时,JCS还支持其他的辅助缓存,如EhCache、JDBC、MongoDB等,你可以根据实际的业务需求和环境选择合适的辅助存储。 总之,这个简单的JCS实例是一个很好的起点,它教你如何在项目中集成JCS,利用其高效、灵活的...

    JCS1.3开源的缓存架构

    1. **与 Ehcache 比较**:Ehcache 是一个广泛使用的 Java 缓存框架,侧重于内存缓存,而 JCS 在分布式缓存方面更加强大。 2. **与 Redis 比较**:Redis 是一个内存数据结构存储系统,功能更全面,但 JCS 更专注于 ...

    cachet:抽象缓存框架 - 支持 Ehcache、Infinispan 和 Memcached 库

    支持 Ehcache、Infinispan 和 Memcached 缓存库。 ####目标: 为现有的缓存框架(如 JCS 和 Hazelcast)提供支持。 为客户端配置 API 提供支持。 提供对 Tree Cache API 的支持。 实现像缓存这样的高性能树。 ##...

    5款最好的免费Linux缓存系统.pdf

    2. Java Caching System (JCS):JCS是一个基于Java的缓存系统,提供了高性能的缓存服务。JCS可以将对象缓存在内存、硬盘或数据库中,并且可以在分布式环境中提供高性能的缓存服务。 JCS的优点在于它可以提供高性能...

    JAVAWEB缓存技术

    6. **其他缓存技术**:除了OSCache和JCS,JAVAWeb还有其他缓存技术,如Hibernate的二级缓存、 Ehcache、Guava Cache等,它们各有特点,适应不同的场景。 总的来说,JAVAWeb缓存技术的选型和使用是一项复杂而重要的...

    Java缓存讨论.pdf

    Jofti为缓存层中的对象(支持EHCache、JBossCache和OSCache)以及实现了Map接口的存储结构中的对象提供索引和搜索功能。它提供了透明的索引管理及易于使用的查询接口。 最后,cache4j提供了一个简单API的快速Java...

    jar包-spring-modules-cache.jar

    而Spring Modules Cache是Spring框架的一个扩展,它提供了一种统一的缓存管理机制,使得开发者能够方便地在Spring应用中集成各种缓存解决方案,如 EhCache、JCS、GemFire等。本文将深入探讨Spring Modules Cache在...

    Java中各类Cache机制实现解决方案

    此外,JCS还具有良好的扩展性和兼容性,可以在不同的服务器架构下运行。 #### 四、EHCache **EHCache** 是一个广泛使用的高性能、轻量级的Java缓存库。最初是为了配合Hibernate 2.1版本而设计的,但现在已经被许多...

    Java认证:各类Cache机制的实现方法

    本文将深入探讨几种常见的Java缓存机制的实现方法,包括OSCache、Java Caching System (JCS)、EHCache、JCache、ShiftOne、SwarmCache以及TreeCache/JBossCache和WhirlyCache。 1. OSCache: OSCache 是一款广泛...

    《自己动手写前端框架》电子书.pdf

    电子书还涉及了一些与开发环境有关的话题,例如在Linux下搭建Tiny开发环境、如何重构SmartAdmin来展示TinyUI、在Tiny框架中引入缓存解决方案如EhCache和JCS,以及如何利用Tiny框架中的组件来进行Web界面开发等。...

    rapidpm-binarycache

    默认情况下,聚合将产生一个jar,其中包含ehcache和该缓存的相应REST端点。 这是一个如何使用REST和Hazelcast生成缓存的示例: 禁用默认配置文件binarycache-provider-ehcache 启用配置文件binarycache-proivder-...

    java中的缓存.pdf

    文档提到了多种缓存框架和API,比如Ehcache、JCS(Java Caching System)、JCache、SwarmCache、TreeCache/JBossCache等。这些缓存框架提供丰富的配置选项,能够优化缓存的性能和功能,适应不同应用场景的需求。 ...

    memory cache

    网络上有很多缓存解决方案,如ehcache、oscache和apache jcs,它们主要适用于缓存业务数据(Transaction Data)。业务数据是指随时间线性增长的数据,这类数据通常采用最近最少使用(LRU)策略进行缓存,即只缓存...

    毕业设计进展汇报ppt

    5. 典型的缓存框架:EHcache、Jbosscache、OSCache、JCS、Tangosol Coherence等。 6. 缓存框架的实现:使用JAVA语言,关系数据库,WebSphere Server等技术,实现缓存框架。 7. 缓存框架的测试结果:测试了写入内存...

Global site tag (gtag.js) - Google Analytics