部分都是网络上查询的资料,很多,不列举了。
EHCache
简介:
http://apps.hi.baidu.com/share/detail/7491847
http://wangjicn.cn/data/read/9082403332378.html
http://blog.csdn.net/mgoann/archive/2009/04/16/4083179.aspx
http://yuanyong.javaeye.com/blog/691499
Spring
整合
EHCache
:
http://wangjicn.cn/data/read/909291257438.html
http://www.yybean.com/ehcache-getting-started-series-5-a-distributed-cache-clus
ter-environment-configuration
http://zhyt710.javaeye.com/blog/333213
http://tech.ddvip.com/2010-04/1270187299149502.html
http://blog.csdn.net/goodboylllll/archive/2010/04/01/5442329.aspx
EHCache:EHCache
是一个快速的、轻量级的、易于使用的、进程内的缓存。它支持 read-only
和 read/write 缓存,内存和磁盘缓存。是一个非常轻量级的缓存实现,而且从 1.2 之后就支持了集群,即分布式。
系统缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能.
缓存设想内存是有限的,缓存的时效性也是有限的,所以可以设定内存数量的大小,可以执行失效算法,可以在内存满了的时候,按照最少访问等算法将缓存直接移除或切换到硬盘上。
Ehcache
从 Hibernate
发展而来,逐渐涵盖了 Cahce
界的全部功能,是目前发展势头最好的一个项目。具有快速,简单,低消耗,依赖性小,扩展性强,支持对象或序列化缓存,支持缓存或元素的失效,提供
LRU、LFU 和 FIFO 缓存策略,支持内存缓存和磁盘缓存,分布式缓存机制等等特点。
Cache
存储方式 :内存或磁盘。
官方网站
:
http://ehcache.sourceforge.net/
1.
快速
.
2.
简单
.
3.
多种缓存策略
4.
缓存数据有两级:内存和磁盘,因此无需担心容量问题
5.
缓存数据会在虚拟机重启的过程中写入磁盘
6.
可以通过
RMI
、可插入
API
等方式进行分布式缓存
7.
具有缓存和缓存管理器的侦听接口
8.
支持多缓存管理器实例,以及一个实例的多个缓存区域
9.
提供
Hibernate
的缓存实现
Cache
的配置很灵活,官方提供的Cache
配置方式有好几种。你可以通过声明配置、在xml
中配置、在程序里配置或者调用构造方法时传入不同的参数,具体的Cache
的获取后续讲到。你可以将Cache
的配置从代码中剥离出来,也可以在使用运行时配置,所谓的运行时配置无非也就是在代码中配置。以下是运行时配置的好处:
Ø
在同一个地方配置所有的Cache
,这样很容易管理Cache
的内存和磁盘消耗。
Ø
发布时可更改Cache
配置。
Ø
可再安装阶段就检查出配置错误信息,而避免了运行时错误。
本文将会对ehcache.xml
配置文件进行详细的阐述。如果你调用了CacheManager
默认构造方法去创建CacheManager
的实例,此方法会到classpath
中找ehcache.xml
文件,否则它会到类路径下找ehcache-failsafe.xml
文件。而ehcache-failsafe.xml
被包含在jar
包中,所有它肯定能找的到。
ehcache-failsafe.xml
提供了一个非常简单的默认配置,这样可以使用户在没有创建ehcache.xml
的情况下使用Ehcache
。不过这样做Ehcache
会提醒用户创建一个正确的Ehcache
配置。
ehcache.xml
片段:
<ehcache>
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
</ehcache>
在Ehcache-1.6
之前的版本,只支持ASCII
编码的ehcache.xml
配置文件。在Ehcach-1.6
之后版本中,支持UTF8
编码的ehcache.xml
配置文件。因为向后兼容,所有采用ASCII
编码的配置文件完全没有必要转换为UTF8
。一个CacheManager
必须要有一个XML
配置。由于磁盘路径或是监听端口,多个CacheManager
使用同一个配置文件时会出现错误。下面是ehcache.xml
具体实例以及配置指南
<ehcache xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
l
CacheManager
配置
DmulticastGroupPort=4446
,这样可以配置监听端口。
l
DiskStore
配置
如果你使用的DiskStore
(磁盘缓存),你必须要配置DiskStore
配置项。如果不配置,Ehcache
将会使用java.io.tmpdir
。diskStroe
的“path”
属性是用来配置磁盘缓存使用的物理路径的,Ehcache
磁盘缓存使用的文件后缀名是.data
和.index
。
<disStore path=”java.io.tmpdir”/>
l
CacheManagerEventListener
配置
我们通过CacheManagerEventListenerFactory
可以实例化一个CacheManagerPeerProvider
,当我们从CacheManager
中added
和removed
Cache
时,将通知CacheManagerPeerProvider
,这样一来,我们就可以很方面的对CacheManager
中的Cache
做一些统计。
注册到CacheManager
的事件监听类名有: adding a Cache
和removing a Cache <cacheManagerEventListenerFacotory class=”” properties=””/>
l
CacheManagerPeerProvider
配置
在集群中CacheManager
配置CacheManagerPeerProviderFactory
创建CacheManagerPeerProvider
。具体的实例如下:
<cacheManagerPeerProviderFactoryclass="net.sf.ehcache.distribution. RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual, rmiUrls=//server1:40000/sampleCache1|//server2:40000/sampleCache1| //server1:40000/sampleCache2|//server2:40000/sampleCache2"
propertySeparator="," />
l CacheManagerPeerListener配置
CacheManagerPeerListener配置是用来监听集群中缓存消息的分发的。
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=fully_qualified_hostname_or_ip,
port=40001,
socketTimeoutMillis=120000"
propertySeparator="," />
l
Cache
配置
Ø
name
:Cache
的唯一标识
Ø
maxElementsInMemory
:内存中最大缓存对象数。
Ø
maxElementsOnDisk
:磁盘中最大缓存对象数,若是0
表示无穷大。
Ø
eternal
:Element
是否永久有效,一但设置了,timeout
将不起作用。
Ø
overflowToDisk
:配置此属性,当内存中Element
数量达到maxElementsInMemory
时,Ehcache
将会Element
写到磁盘中。
Ø
timeToIdleSeconds
:设置Element
在失效前的允许闲置时间。仅当element
不是永久有效时使用,可选属性,默认值是0
,也就是可闲置时间无穷大。
Ø
timeToLiveSeconds
:设置Element
在失效前允许存活时间。最大时间介于创建时间和失效时间之间。仅当element
不是永久有效时使用,默认是0.
,也就是element
存活时间无穷大。
Ø
diskPersistent
:是否缓存虚拟机重启期数据。(这个虚拟机是指什么虚拟机一直没看明白是什么,
有高人还希望能指点一二)。
Ø
diskExpiryThreadIntervalSeconds
:磁盘失效线程运行时间间隔,默认是120
秒。
Ø
diskSpoolBufferSizeMB
:这个参数设置DiskStore
(磁盘缓存)的缓存区大小。默认是30MB
。每个Cache
都应该有自己的一个缓冲区。
Ø
memoryStoreEvictionPolicy
:当达到maxElementsInMemory
限制时,Ehcache
将会根据指定的策略去清理内存。默认策略是LRU
(最近最少使用)。你可以设置为FIFO
(先进先出)或是LFU
(较少使用)。这里比较遗憾,Ehcache
并没有提供一个用户定制策略的接口,仅仅支持三种指定策略,感觉做的不够理想。
Ø
Cache Exception Handling
配置
<cacheExceptionHandlerFactory class="com.example.ExampleExceptionHandlerFactory" properties="logLevel=FINE"/>
总结:
这里只对通用缓存的配置做了详细的阐述,至于RMI
缓存和集群缓存可以参考这里。
下面给出几个配置示例:
Ø
Ehcache
默认Cache
配置
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
diskSpoolBufferSizeMB="30"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
Ø
SampleCache1
配置
简单配置,在ehcache.xml
文件中有此配置,在使用Ehcache
前最好将其删除掉,自己配置。
缓存名sampleCache1
,内存中最多可缓存10000
个Element
,其中的element
会在闲置5
分钟或是存活10
分钟之后失效。
超过10000element
时,element
将会输出到磁盘中,输出路径是java.io.tmpdir
。
<cache name="sampleCache1"
maxElementsInMemory="10000"
maxElementsOnDisk="1000"
eternal="false"
overflowToDisk="true"
diskSpoolBufferSizeMB="20"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
memoryStoreEvictionPolicy="LFU"
/>
Ø
SampleCache2
配置
Cache
名为SampleCache2
,内存中最多可以缓存1000
个element
,超出1000
不能输出到磁盘中。缓存是永久有效的。
<cache name="sampleCache2"
maxElementsInMemory="1000"
eternal="true"
overflowToDisk="false"
memoryStoreEvictionPolicy="FIFO"
/>
Ø
SampleCache3
配置
Cache
名为SampleCache3
。可缓存到磁盘。磁盘缓存将会缓存虚拟机重启期的数据。磁盘缓存失效线程运行间隔时间是10
分钟。
<cache name="sampleCache3"
maxElementsInMemory="500"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
diskPersistent="true"
diskExpiryThreadIntervalSeconds="1"
memoryStoreEvictionPolicy="LFU"
/>
Ø
sampleDistributedCache1
配置
Cache
名为sampleDistributedCache1
。
<cache name="sampleDistributedCache1"
maxElementsInMemory="10"
eternal="false"
timeToIdleSeconds="100"
timeToLiveSeconds="100"
overflowToDisk="false">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
<bootstrapCacheLoaderFactory
class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/>
</cache>
Ø
sampleDistributedCache2
配置
<cache name="sampleDistributedCache2"
maxElementsInMemory="10"
eternal="false"
timeToIdleSeconds="100"
timeToLiveSeconds="100"
overflowToDisk="false">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicateAsynchronously=false, replicatePuts=false,
replicateUpdates=true, replicateUpdatesViaCopy=true,
replicateRemovals=false"/>
</cache>
Ø
sampleDistributedCache3
配置
<!--
Sample distributed cache named sampleDistributedCache3.
This cache replicates using defaults except that the asynchronous replication
interval is set to 200ms.
-->
<cache name="sampleDistributedCache3"
maxElementsInMemory="10"
eternal="false"
timeToIdleSeconds="100"
timeToLiveSeconds="100"
overflowToDisk="false">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="asynchronousReplicationIntervalMillis=200"/>
</cache>
分享到:
相关推荐
**缓存框架 Ehcache 学习笔记** Ehcache 是一个广泛使用的开源 Java 缓存框架,它在处理大量数据的高性能应用中扮演着重要角色。Ehcache 提供了本地内存缓存、磁盘存储以及分布式缓存的能力,使得应用程序能够快速...
### Ehcache学习文档知识点梳理 #### 一、文档概述与目的 - **文档目的**:旨在帮助读者深入了解和掌握Ehcache缓存技术,适用于所有对缓存技术感兴趣的技术人员。 - **文档范围**:覆盖了Ehcache的基础概念、配置...
1. **缓存管理器(Cache Manager)**:这是Ehcache的核心,负责管理多个缓存实例。每个缓存管理器都有自己的配置,并且可以独立于其他管理器工作,这样可以在不同的应用模块中使用不同的缓存策略。 2. **缓存(Cache)*...
通过这些示例,我们可以学习如何设置Ehcache的分布式特性,例如使用Terracotta服务器进行集群缓存,以及如何处理分布式环境下的缓存一致性问题。 总结来说,Ehcache的监控涉及了多个方面,包括但不限于使用JMX、Web...
**Ehcache简介** Ehcache是一款开源的Java缓存框架,它被广泛应用于提高应用程序性能,通过存储数据副本以减少对数据库的...通过`Ehcache_Hello`案例,开发者可以逐步学习和实践,从而熟练运用Ehcache进行缓存管理。
ehcache-2.10.6.jar ehcache jar包供各位开发人员 学习、交流,切勿用于商业用途。
通过分析这些源代码,你可以学习如何集成Ehcache到你的应用程序中,以及如何使用反射进行测试和调试。 总结起来,这个例子展示了如何将Ehcache的强大缓存能力与Java反射机制相结合,以提高测试的灵活性和覆盖率。...
通过深入学习Ehcache的源码,我们可以理解其内部的工作机制,包括缓存的创建、存储、检索、更新和清除过程,以及如何优化和调整缓存配置以适应不同应用场景。这有助于我们更好地利用Ehcache提升应用程序的性能,并...
EHCache 是一个开源的、高性能的缓存解决方案,广泛应用于Java应用程序中,以提高数据访问的速度和...通过学习这份技术文档和实际操作,开发者可以深入了解EHCache的工作原理,并有效地利用它来优化应用程序的性能。
通过对 Mybatis-ehcache 1.2.1 的源码学习,开发者可以更好地理解缓存如何与 ORM 框架协同工作,优化数据库交互,同时也能为自定义缓存解决方案提供参考。在实际开发中,结合缓存策略和监控,可以进一步提升系统的...
** Ehcache 学习笔记** Ehcache 是一个开源的 Java 缓存系统,它提供了在应用程序中存储和检索数据的高效方式,特别是在高并发环境下。这个笔记将深入探讨 Ehcache 的核心概念、配置和使用场景,以及如何通过源码...
1. **Ehcache的基本概念** - **缓存**:缓存是一种存储机制,用于临时存储频繁访问的数据,以减少计算资源的消耗和响应时间。 - **元素(Element)**:在Ehcache中,数据以键值对的形式存在,称为缓存元素。 - **...
1. **配置Ehcache** 首先,我们需要在项目中引入Ehcache的依赖。在Maven项目中,可以在`pom.xml`中添加以下依赖: ```xml <groupId>org.ehcache <artifactId>ehcache <version>3.x.y</version> <!-- 替换...
1. Ehcache简介 Ehcache是由Terracotta公司开发的开源缓存解决方案,它支持内存和磁盘存储,并且可以与其他Java应用程序服务器集成。Ehcache的核心特性包括:高效的缓存管理、内存和硬盘的二级缓存、缓存过期策略...
1. **Cache Manager(缓存管理器)**:它是Ehcache的入口点,负责创建、管理和协调多个缓存实例。`net.sf.ehcache.CacheManager`类是实现这一功能的主要类,它维护了一个缓存的集合,并提供了添加、删除和获取缓存的...
1. **缓存管理**: Ehcache允许开发者创建、配置和管理多个缓存区域,每个区域可以有自己的大小限制、过期策略等。 2. **内存和磁盘存储**: Ehcache支持在内存和磁盘之间自动切换,当内存达到预设限制时,会将不常...
Spring 和 Ehcache 是两个在Java开发中非常重要的框架。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-...这个示例Demo是学习和理解Spring与Ehcache集成的一个很好的起点。
1. **配置Ehcache**:在每个节点上,我们需要配置Ehcache,指定缓存的大小、过期策略等。同时,也需要为RMI配置适当的端口和注册表地址。 2. **实现RMI接口**:创建一个接口,定义缓存操作,如get、put、remove等。...
1. **添加依赖**:在项目的pom.xml文件中,需要引入Ehcache的Maven依赖,确保在编译时能够正确加载库。 2. **配置Ehcache**:创建ehcache.xml配置文件,定义缓存策略,如缓存的大小、过期时间等。在Spring MVC中,...
学习Ehcache,你需要理解以下几个关键点: 1. **配置文件**:Ehcache的配置主要通过XML文件完成,包括定义缓存区域、设置缓存策略、配置磁盘存储等。 2. **编程接口**:熟悉`CacheManager`、`Cache`和`CacheEntry`...