EHCache介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EHCache介绍

简介

系统缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能. 缓存设想内存是有限的,缓存的时效性也是有限的,所以可以设定内存数量的大小,可以执行失效算法,可以在内存满了的时候,按照最少访问等算法将缓存直接移除或切换到硬盘上。

Ehcache从Hibernate发展而来,逐渐涵盖了Cahce界的全部功能,是目前发展势头最好的一个项目。具有快速,简单,低消耗,依赖性小,扩展性强,支持对象或序列化缓存,支持缓存或元素的失效,提供LRU、LFU 和FIFO缓存策略,支持内存缓存和磁盘缓存,分布式缓存机制等等特点。

2009年8月Terracotta公司并购了开源缓存项目Ehcache, Terracotta 公司的产品 Terracotta 是一个 JVM 级的开源群集框架,提供 HTTP Session 复制、散布式缓存、POJO 群集、跨越集群的JVM 来完成散布式使用顺序协调。并购后EhCache 首要的改进都集中在跟Terracotta 框架的集成上,这是一个真实意义上的企业级缓存处置方案。Ehcache1.7版本上首次加入了ehcache-terracotta组件模块,想利用terracotta来实现更方便的集群操作。

Overview

Ehcache是一个开源的,用于提高访问性能的标准高速缓存,它抛弃了数据库同时易于扩展。Ehcache拥用强大的,可靠和完整的功能,这已成为最广泛使用的基于Java的高速缓存。

Ehcache可以实现TB级的高速缓存管理,可配置多个缓存节点。对于需要互联的分布式缓存应用,Ehcache的使用开源的Terracotta Sever的阵列。

Ehcache是Terracotta公司的一个长期开发、维护和支持的专业开源项目。有效基于Apache 2 license。除了开源的ehcache,Terracotta公司还提供企业版的Ehcache全天候的专业支持,咨询和培训。

Architecture

下图是系统的架框图和主要的API。

特点

高效且轻量级

快速

多年来,各种性能测试表明ehcache是java缓存中最快之一。

Ehcache的线程机制专门为大型、高并发的系统设计。同时,大量测试表明ehcache各测试版和发行版都保持着高性能。

简单

很多用户都很难知道自己正在使用着ehcache,因为设置合理的默认值后无需初始配置。API非常简单易于使用,你可能只需要几分钟就可以让他运行起来。

低消耗

他是一个只有几百KB的package。

依赖性小

核心使用的唯一的依赖是JCACHE的API

扩展性

为提供扩展到千兆字节,提供内存和磁盘存储。

可扩展到数百个缓存

适合多核CPU服务器上的高并发负载

每个虚拟机可创建多个CacheManager

灵活性

支持对象或序列化缓存

自Ehcache1.2后, 除序列化API外, 提供了对象API。非序列化的

对象可以使用Ehcache中除DiskStore(磁盘存储)和复制之外的

所有部分。如果尝试去存储或复制对象,一个警告级别的日

志消息会发出。除了元素返回的方法(获取缓存元素,可理解

为数据)不同外,对象和序列化的API是一致的。序列化和对

象API的唯一区别是对象元素上的两个新方法:

getObjectValue 和getKeyValue。这使得初始使用对象缓存,

然后切换到序列化上变得相当容易。也有很多的Java类未序

列化。

支持缓存范围或基于元素的过期策略

每个缓存的在线时间(在线意为处于活动状态,可提供缓存服务)

和下线时间(下线意为不可提供服务的状态)是可以设置的。另

外,自Ehcache1.2.1后, 可以设置每个元素的时间配置来覆盖缓存中的配置。提供LRU、LFU和FIFO缓存策略

支持内存缓存和磁盘缓存

支持动态,运行时的缓存配置

基于标准

完全实现JSR107 JCACHE API

Ehcache提供了至今为止的JSR107 JCACHE 标准的最完整实现。因为JCACHE还没有发布JCACHE API,Ehcache发布net.sf.jsr107cache,并提供实现。

扩展性

可插入监听器

Ehcache 1.2提供CacheManagerEventListener和CacheEventListener 接口。实现接口可以实现ehcache.xml中对插入的配置。

插件式查询、克隆和监测

插件式缓存扩展

插件式缓存异常处理

持久化应用

持久化磁盘存储JVM重启期数据。

2004年Ehcache 1,第一个开源版本中,引入了将程序关闭后缓存数据持久化存储的功能。VM重启时,持久化存储到存储数据的磁盘, 当应用启动时,缓存数据可以使用。需要时Flush到磁盘(通过调用cache.flush()方法)

支持监听

CacheManager监听

通过CacheManagerEventListener接口注册CacheManager 监听器,实现如下事件方法:

notifyCacheAdded() 缓存被添加时监听器会得到通知notifyCacheRemoved() 缓存被移除时监听器会得到通知缓存事件监听

通过CacheEventListener 接口注册缓存事件监听器, 此接口提供很多缓存事件处理后的事件通知:

notifyElementRemoved 元素被移除时监听器会得到通知notifyElementPut 元素被添加时监听器会得到通知notifyElementUpdated 元素被更新时监听器会得到通知notifyElementExpired 元素被过期时监听器会得到通知

JMX支持

相关文档
最新文档