ehcache调用说明

ehcache简介

ehcache是非常优秀的、轻量级的、本地缓存方案,它可以解决大并发情况下静态资源的快速保存与访问。

引入ehcache jar包

这里引入最新版本的ehcache jar包:

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>2.10.0</version>
    <type>pom</type>
</dependency>     

基本概念

1. CacheManager

CacheManager是缓存的管理器,使用ehcache必需创建一个CacheManager,它的创建方式有两种:

a. 单例模式:

private static volatile CacheManager cacheManager = CacheManager.create()

b. ehcache 2.x以后允许多个cacheManager存在,可以通过.xml配置新的cacheManager,如下demo-ehcache.xml

<ehcache name="DemoCacheManager">
</ehcache>

通过.xml文件初始化非单例模式的cacheManager,如下:

    private static volatile CacheManager cacheManager = CacheManager.newInstance(this.class.getClassLoader().getResourceAsStream("demo-ehcache.xml"));

2. cache(缓存)

一个CacheManager可以管理多个缓存,每个缓存在内存中都有其自己的属性,例如缓存元素(Element)的最大个数、缓存在内存中的最长存活时间、缓存的淘汰算法等。一个cache可以存储多个缓存元素(Element)。缓存在使用前都要进行注册,注册有两种方式:

1. 通过xml配置文件注册。配置文件可配置缓存的名字,缓存在堆中的最大个数,缓存的淘汰算法等,参数非常之多,下面是一个最简单的例子:

<ehcache>
    <cache name="demo"
           maxEntriesLocalHeap="10000"
           eternal="false"
           timeToIdleSeconds="300"
           timeToLiveSeconds="600"
           memoryStoreEvictionPolicy="LFU"
            >
    </cache>
</ehcache>

上面配置了一个缓存名为demo的缓存,它在内存中的最大个数为10000个,最长存活时间timeToLiveSeconds为10分钟(600s),最长可访问时间timeToIdleSeconds为5分钟(300s)。当个数超过最大个数限制时采用LFU算法进行淘汰。eternal表示缓存是否永久不失效,当这个值为true时,上面的最大存活时间和最长可访问时间无效。

2. 通过代码动态注册

下面是一个例子,与通过xml文件注册效果一样:

  Cache newMemCache = new Cache("demo",
          1000,         // 内存中最大元素个数
          MemoryStoreEvictionPolicy.LFU,   // 淘汰策略
          false,                 // 是否存到disk
          "/data/appdatas",                    // 存在disk的位置
          fale,   // 是否永久有效
          600,    // timeToLiveSeconds
          300,    // timeToIdleSeconds
          false,  // 是否在JVM重启的时候,是否保存到disk
          60 * 60,  // 多长时间跑一次disk超时的线程(这个参数没用)
          null    // 注册事件
  );
  cacheManager.addCache(newMemCache);

3. Element缓存元素

缓存元素是存储数据的最小单位,由其ElementKey和对象组成,如下定义:

Element element = new Element(elementkey, object);

注意:这里的object可以为任意对象!!

调用说明

1. add操作

往缓存中添加Element,如下:

  Cache cache = cacheManager.getCache("demo");
  if (cache != null) {
      Element element = new Element("demoElementKey", "demo object");
      cache.put(element);
  }

2. get操作

从缓存中取元素

  Cache cache = cacheManager.getCache("demo");
  if (null != cache) {
      Element element = cache.get("demoElementKey");
  }

具体例子

具体例子请参考我写的ehcahce-client

时间: 2024-11-03 21:29:23

ehcache调用说明的相关文章

SpringMVC mybatis 多数据源 SSM java redis shiro ehcache

获取[下载地址]   QQ: 313596790A 调用摄像头拍照,自定义裁剪编辑头像 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技术:313596790 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块C 集成阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩

Ehcache详细解读

Ehcache详细解读 Ehcache  是现在最流行的纯Java开源缓存框架,配置简单.结构清晰.功能强大,最初知道它,是从Hibernate的缓存开始的.网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google:对于API,官网上介绍已经非常清楚,请参见官网:但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思考,希望对缓存感兴趣的朋友有所收获. 一.特性一览 ,来自官网,简单翻译一下

SpringMVC+mybatis+maven+Ehcache缓存实现

所谓缓存,就是将程序或系统经常要调用的对象存在内存中,以便其使用时可以快速调用,不必再去创建新的重复的实例.这样做可以减少系统开销,提高系统效率. 缓存主要可分为二大类: 一.通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式: 二.内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查. 一.EhCache缓存系统简介 EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点,是 Hibernate

java企业级框架 SpringMVC_mybatis or hibernate+ ehcache +shiro+druid+bootstrap+HTML5

获取[下载地址]   QQ: 313596790   [免费支持更新] 支持三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 代码生成器(开发利器);       增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成    就不用写搬砖的代码了,生成的放到项目里,可以直接运行 B 阿里巴巴数据库连接

SpringMVC mybatis or hibernate ehcache二级缓存maven非和maven版本

获取[下载地址]   QQ: 313596790   [免费支持更新] 支持三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 代码生成器(开发利器);       增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成    就不用写搬砖的代码了,生成的放到项目里,可以直接运行 B 阿里巴巴数据库连接

010-shiro与spring web项目整合【四】缓存Ehcache、Redis

一.Ehcache shiro每次授权都会通过realm获取权限信息,为了提高访问速度需要添加缓存,第一次从realm中读取权限数据,之后不再读取,这里Shiro和Ehcache整合. 1.添加Ehcache的jar包 <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>2.5.3</versi

SpringMVC mybatis 多数据源 代码生成器 SSM java redis shiro ehcache

获取[下载地址]   QQ: 313596790官网 http://www.fhadmin.org/A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块C 集成阿里巴巴数据库连接池druid  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都

Ehcache(08)——可阻塞的Cache—BlockingCache

可阻塞的Cache-BlockingCache 在上一节我们提到了显示使用Ehcache锁的问题,其实我们还可以隐式的来使用Ehcache的锁,那就是通过BlockingCache.BlockingCache是Ehcache的一个封装类,可以让我们对Ehcache进行并发操作.其内部的锁机制是使用的net.sf.ehcache.concurrent.ReadWriteLockSync,与显示锁调用是一样的实现,而ReadWriteLockSync内部使用的是Java的java.util.conc

ehcache 页面整体缓存和局部缓存

页面缓存是否有必要?. 这样说吧,几乎所有的网站的首页都是访问率最高的,而首页上的数据来源又是非常广泛的,大多数来自不同的对象,而且有可能来自不同的db ,所以给首页做缓存是很必要的.那么主页的缓存策略应该怎样设计呢?我认为应该是某个固定时间之内不变的,比如说2分钟更新一次.那么这个缓存应该做在什么地方呢?让我们来看一下,当前我们的的应用的结构一般是是page-filter-action-service-dao-db ,这个过程中的- 的地方都是可以做缓存的地方,根据页面缓存的特征,应该把页面缓