首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Ehcache学习(一)

2012-11-12 
Ehcache学习(1)参考文档:部分都是网络上查询的资料,很多,不列举了。EHCache简介:http://apps.hi.baidu.com/

Ehcache学习(1)
参考文档:

部分都是网络上查询的资料,很多,不列举了。

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的缓存实现

Ehcache缓存配置

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片段:

?

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="xml"><!--Sample distributed cache named sampleDistributedCache3.This cache replicates using defaults except that the asynchronous replicationinterval 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>

?

?

?

?

?

?

热点排行