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

EHCache 初始使用指南

2012-11-22 
EHCache 初步使用指南Ehcache详细解读 http://raychase.iteye.com/blog/1545906,可以了解更多的之知识。EhC

EHCache 初步使用指南
Ehcache详细解读 http://raychase.iteye.com/blog/1545906,可以了解更多的之知识。

EhCache 的主要特性有:
快速;
简单;
多种缓存策略;
缓存数据有两级:内存和磁盘,因此无需担心容量问题;
缓存数据会在虚拟机重启的过程中写入磁盘;
可以通过 RMI、可插入 API 等方式进行分布式缓存;
具有缓存和缓存管理器的侦听接口;
支持多缓存管理器实例,以及一个实例的多个缓存区域;
提供 Hibernate 的缓存实现;
等等 …
由于 EhCache 是进程中的缓存系统,一旦将应用部署在集群环境中,每一个节点维护各自的缓存数据,当某个节点对缓存数据进行更新,这些更新的数据无法在其它节点中共享,这不仅会降低节点运行的效率,而且会导致数据不同步的情况发生。

在ehcache中,缓存有2个失效相关的配置即 timeToLiveSeconds 和 timeToIdleSeconds , 在通常的解释中,
前者表示一条缓存自创建时间起多少秒后失效,
后者表示一条缓存自最后读取或更新起多少秒失效。

在2个同时配置时可能时间计算就不那么简单了。 简单说来 任何一方为0,则以另一方时间为准。否则就以最短时间为准。 

ehcache是这样计算失效时间的
1 如果 timeToIdleSeconds 不为0并且 timeToLiveSeconds 为0, 如果缓存未被读过,失效时间=timeToIdleSeconds
2 如果 timeToLiveSeconds 不为0,失效时间= timeToLiveSeconds +读取时间
3 否则 失效时间=min(timeToIdleSeconds, timeToLiveSeconds +读取时间)

这两个参数很容易误解,看文档根本没用,我仔细分析了ehcache的代码。结论如下:
1、timeToLiveSeconds的定义是:以创建时间为基准开始计算的超时时长;
2、timeToIdleSeconds的定义是:在创建时间和最近访问时间中取出离现在最近的时间作为基准计算的超时时长;
3、如果仅设置了timeToLiveSeconds,则该对象的超时时间=创建时间+timeToLiveSeconds,假设为A;
4、如果没设置timeToLiveSeconds,则该对象的超时时间=max(创建时间,最近访问时间)+timeToIdleSeconds,假设为B;
5、如果两者都设置了,则取出A、B最少的值,即min(A,B),表示只要有一个超时成立即算超时。
Ehcache 中ehcache.xml 配置详解和示例
http://www.360doc.com/content/11/0525/19/4154133_119352895.shtml



EHCache 初步使用指南
http://nakata-yf.iteye.com/blog/23536
1. EHCache 的特点,系统要求及安装
是一个纯Java ,过程中(也可以理解成插入式)缓存实现
Hibernate2.1,Spring支持EHcache嵌入,自我感觉Hibernate2.1 + EHCache 很过瘾。。(测试结果比Hibernate+JCS 好多了)
支持多CPU服务器
其版本发布前进行了产品级测试
支持:运行环境jdk1.2到5版本(源代码编译需1.4或1.5 版本)
jdk1.4和1.5 版本,需加入apache 的 commons-logging类库 http://jakarta.apache.org/commons/logging.html
jdk1.2和1.3 版本,需加入commons-collections 2.1 版本 http://jakarta.apache.org/commons/collections.html
和 xerces (xml-apis.jar and xercesImpl.jar), 2.5 版本 http://xml.apache.org/xerces2-j/

如果运行环境为IBM JDK1.4版本上的IBM Websphere 5.1,也需加入 commons-collections 类库(如需要)

单独安装Ehcache ,需把ehcache-X.X.jar 和相关类库方到classpath中。
如项目已安装了Hibernate2.1 ,则不需要做什么。。直接可以使用Ehcache

Cache 存储方式 :内存或磁盘

2. 单独使用 EHCache

使用CacheManager 创建并管理Cache
使用默认配置文件创建
table="ut_Countries" 
dynamic-update="false"
dynamic-insert="false"
>;
...


加入类似如下格式信息:

比如:


然后在ehcache.xml中加入

maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
overflowToDisk="false"
/>

API也挺简单,如下的api:
    CacheManager主要的缓存管理类,一般一个应用为一个实例,如下
    CacheManager.create();也可以使用new CacheManager的方式创建
     默认的配置文件为ehcache.xml文件,也可以使用不同的配置:  
     
 
get Serializable  
     


不过缓存还是基本上以配置方式为主

热点排行