EHCache 技术文档 缓存 spring缓存

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

目录

0. 文档介绍 (2)

0.1文档目的 (2)

0.2文档范围 (2)

0.3读者对象 (2)

0.4参考文献 (2)

0.5术语与缩写解释 (3)

1.概述 (4)

1.1背景 (4)

1.2主要特征 (3)

1.3环境 (5)

1.4下载资源 (5)

2. EHCACHE页面缓存的配置 (5)

2.1EHC ACHE的类层次模型 (5)

2.2环境搭建 (6)

2.3 EHCACHE配置文件中元素说明................................................... 错误!未定义书签。

2.4在工程中单独使用...................................................................... 错误!未定义书签。

3. 在SPRING中运用EHCACHE ....................................................... 错误!未定义书签。

4. 分布式缓存集群环境配置 (19)

4.1集群配置方式 (19)

5. 测试用例 (28)

0. 文档介绍

0.1 文档目的

记录使用EHCache实现页面级的缓存以及完成集群设计的过程。0.2 文档范围

记录使用EHCache实现页面级的缓存以及完成集群设计的过程。0.3 读者对象

任何有兴趣的家伙。

0.4 参考文献

提示:列出本文档的所有参考文献(可以是非正式出版物),格式如下:[标识符] 作者,文献名称,出版单位(或归属单位),日期

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

0.5 术语与缩写解释

1.概述

1.1背景

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

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

Cache 存储方式:内存或磁盘。

官方网站:/

1.2 主要特性

1. 快速.

2. 简单.

3. 多种缓存策略

4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题

5. 缓存数据会在虚拟机重启的过程中写入磁盘

6. 可以通过RMI、可插入API等方式进行分布式缓存

7. 具有缓存和缓存管理器的侦听接口

8. 支持多缓存管理器实例,以及一个实例的多个缓存区域

9. 提供Hibernate的缓存实现

1.3 环境

Windows XP、JDK1.6.03、Tomcat5.5、EHcache2.1

注意:配置好环境变量。

1.4下载资源

ehcache-2.1.0-distribution.tar.gz:以及ehcache-web-2.0.2-distribution.tar.gz

/projects/ehcache/

注意:同时要下载源代码,部分功能需要修改源代码,重新做包。

2. EHCache页面缓存的配置

2.1 EHCache的类层次模型

主要为三层,最上层的是CacheManager,他是操作Ehcache的入口。我们可以通过CacheManager.getInstance()获得一个单子的CacheManger,或者通过CacheManger的构造函数创建一个新的CacheManger。每个CacheManager都管理着多个Cache。而每个Cache都以一种类Hash的方式,关联着多个Element。Element则是我们用于存放要缓存内容的地方。

2.2 环境搭建

将ehcache-2.1.0-distribution.tar.gz:以及ehcache-web-2.0.2-distribution.tar.gz解压得到

需要将它们放置到WEB-INF/lib下。

有一个重要的配置文件ehcache.xml,可以从ehcache组件包中拷贝一个,也可以自己建立一个。需要放到classpath下。常放的路径为/WEB-INF/classes/ehcache.xml。

2.3 ehcache配置文件中元素说明

ehcach.xml配置文件主要参数的解释,其实文件里有详细的英文注释//DiskStore 配置,cache文件的存放目录,主要的值有

* user.home - 用户主目录

* user.dir - 用户当前的工作目录

* java.io.tmpdir - Default temp file path默认的temp文件目录

范例

1、首先设置EhCache,建立配置文件ehcache.XML,默认的位置在class- path,可以放到你的src目录下:

<?xml version="1.0" encoding="UTF-8"?>

<ehcache>

<diskStore path="Java.io.tmpdir"/>

<defaultCache

maxElementsInMemory="10000" <!- 缓存最大数目->

eternal="false" <!- 缓存是否持久->

overflowToDisk="true" <!- 是否保存到磁盘,当系统当机时->

timeToIdleSeconds="300" <!- 当缓存闲置n秒后销毁->

timeToLiveSeconds="180" <!- 当缓存存活n秒后销毁->

diskPersistent="false"

diskExpiryThreadIntervalSeconds= "120"/>

</ehcache>

了解ehcache 的几个概念,

1 timeToIdleSeconds ,多长时间不访问该缓存,那么ehcache 就会清除该缓存。

2 timeToLiveSeconds ,缓存的存活时间,从开始创建的时间算起。

Ehcache的三种清空策略

1 FIFO,first in first out,这个是大家最熟的,先进先出。

2 LFU,Less Frequently Used,就是上面例子中使用的策略,直白一点就是讲一直以来最少被使用的。如上面所讲,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。

3 LRU,Least Recently Used,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。

首页的页面缓存

一个网站的首页估计是被访问的次数最多的,我们可以考虑给首页做一个页面缓存缓存策略:我认为应该是某个固定时间之内不变的,比如说2分钟更新一次,以应用结构page-filter-action-service-dao-db 为例。

位置:页面缓存做到尽量靠近客户的地方,就是在page和filter之间,这样的优点就是第一个用户请求之后,页面被缓存,第二个用户再来请求的时候,走到filter这

相关文档
最新文档