ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:145.67KB ,
资源ID:12208095      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12208095.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ehcache技术详解.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ehcache技术详解.docx

1、ehcache技术详解Ehcache技术详解1 基本概念EHCache是一个快速的、轻量级的、易于使用的、进程内的缓存。它支持read-only和read/write缓存,内存和磁盘缓存。是一个非常轻量级的缓存实现,而且从1.2 之后就支持了集群,目前的最新版本是2.8。1.1 主要特性(1) 快速、简单(2) 提供LRU、LFU和FIFO 缓存策略(3) 缓存数据有两级:内存和磁盘,因此无需担心容量问题(4) 缓存数据会在虚拟机重启的过程中写入磁盘(5) 支持分布式缓存(6) 支持多缓存管理器实例,以及一个实例的多个缓存区域2 部署2.1 引入官网地址:http:/www.ehcache.o

2、rg/下载发布包 ehcache-2.8.1-distribution.tar.gz并解压1、 将lib下的jar包引入自己的工程 包括核心包:ehcache-2.8.1.jar,依赖jar包:slf4j-api-1.6.6.jar,slf4j-jdk14-1.6.6.jar2、 将ehcache.xml放到src目录下。2.2 配置ehcache.xml中的内容如下: 配置项详解:此配置项配置的是,磁盘缓存的位置。其中java.io.tmpdir的具体位置可以由java代码,System.getProperty(java.io.tmpdir) 来查看。此处的path也可以配置成 user.h

3、ome,user.dir或用户设定的系统变量指定的路径。Cache 元素表示一个一个缓存区域,在ehcache.xml中可以有多个cache,他们之间由name属性来区分。maxEntriesLocalHeap=10000:表示内存中最大可以存在10000个元素。maxEntriesLocalDisk=1000:表示磁盘中最大可以存在1000个元素eternal=false:表示缓存是否持久,false表示不持久可被销毁,true表示一直存在。overflowToDisk=true:是否保存到磁盘,当内存中的元素溢出时。diskPersistent=true:是否保存到磁盘,当进程重启时。di

4、skSpoolBufferSizeMB=20:保存到磁盘的后台线程的缓存为20M,当数据从内存中转到磁盘时,会先将数据转入此缓存,然后由后台线程将数据从缓存中持久化到磁盘。timeToIdleSeconds=300:表示缓存空闲300s后被销毁。timeToLiveSeconds=600:表示缓存最长可以存在300s,然后被销毁。memoryStoreEvictionPolicy=LFU:Ehcache的三种清空策略,FIFO:先进先出。LFU:一直以来最少被使用的,即缓存的元素有一个hit属性,hit值最小的将会被清出缓存。LRU:最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又

5、需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。diskExpiryThreadIntervalSeconds =120:检查磁盘上的缓存超期的线程的运行周期为120s。transactionalMode=off:事务关闭(ehcache中的事务是怎么使用的?)3 使用3.1 Ehcache的类层次结构3.2 Ehcache基本用法使用如下:1、 获取manager, 如果ehcache.xml不是在src下,可以由create(“config/ehcache.xml”)来指定路径。CacheManager manager = CacheManage

6、r.create();2、获取缓存区,根据ehcache.xml中配置的cache节点,指定name来获取cache.Cache cache = manager.getCache(sampleCache1);3、创建key-value形式的元素,存入缓存区,或从缓存区取出。Element element = new Element(key1, wxwtest);cache.put(element);Element find = cache.get(key1);4、关闭mananger.manager.shutdown();另外,Ehcache还提供了监听的机制,在如上的配置文件中:其中clas

7、s是自定义的实现类,继承CacheEventListenerFactory,覆盖createCacheEventListener(Properties props)方法。EhcacheListenerTest代码如下所示:package com.ehcache;import java.util.Properties;import net.sf.ehcache.CacheException;import net.sf.ehcache.Ehcache;import net.sf.ehcache.Element;import net.sf.ehcache.event.CacheEventListen

8、er;import net.sf.ehcache.event.CacheEventListenerFactory;public class EhcacheListenerTest extends CacheEventListenerFactory Override public CacheEventListener createCacheEventListener(Properties props) System.out.println(=create listener=); for(Object key : props.keySet() System.out.println(key+=+pr

9、ops.get(key); return new TestCacheEventListener(); class TestCacheEventListener implements CacheEventListener public Object clone() return new TestCacheEventListener(); public void dispose() System.out.println(=dispose); public void notifyElementEvicted(Ehcache ehcache, Element element) System.out.p

10、rintln(=notifyElementEvicted); public void notifyElementExpired(Ehcache ehcache, Element element) System.out.println(=notifyElementExpired); public void notifyElementPut(Ehcache ehcache, Element element) throws CacheException System.out.println(=notifyElementPut); public void notifyElementRemoved(Eh

11、cache ehcache, Element element) throws CacheException System.out.println(=notifyElementRemoved); public void notifyElementUpdated(Ehcache ehcache, Element element) throws CacheException System.out.println(=notifyElementUpdated); public void notifyRemoveAll(Ehcache ehcache) System.out.println(=notify

12、RemoveAll); 通过监听,在对cache做操作时,调用相应的监听类方法。ehcache的基本用法就是这样。根据以上的基本用法,我们就更容易理解以下ehcache的一些复杂应用。3.3 Ehcache+Mybatis做DAO缓存1、 在搭建好ehcache和Mybatis的基础上,引入mybatis-ehcache-xxx.jar。2、 在ehcache.xml中将默认的缓存区配置上,如下: 3、 修改Mapper.xml,加上cache 节点,例如: !也可以是 - resultMap id=BaseResultMap 4、 mybatis默认是启用cache的,所以对于某一条不想被c

13、ache的sql需要把useCache=false加上。例如:注:貌似单独的Mybatis用不了缓存。测试了没有成功。3.4 Ehcache+Spring做业务层缓存1、 引入相应jar包,spring3.2.xxx所需要的jar, cglib-xxx.jar,ehcache-spring-annotations-xxxx.jar,google-collections-xx.jar2、 配置springbeans xmlns=http:/www.springframework.org/schema/beans xmlns:xsi=http:/www.w3.org/2001/XMLSchema-

14、instance xmlns:ehcache=http:/ehcache-spring- xsi:schemaLocation= http:/www.springframework.org/schema/beans http:/www.springframework.org/schema/beans/spring-beans-3.0.xsd http:/ehcache-spring- http:/ehcache-spring- 3、 配置ehcache.xml 4、 使用,在业务方法上加相应注释Cacheable(cacheName=metaColumnCache)public List ge

15、tColumnModel(String tableId) 3.5 Ehcache做页面缓存假如有这样一个需求:给一个网站的首页做一个页面缓存,2分钟更新一次。以应用结构page-filter-action-service-dao-db 为例,页面缓存做到尽量靠近客户的地方,就是在page和filter之间 ,这样的优点就是第一个用户请求之后,页面被缓存,第二个用户再来请求的时候,走到filter这个请求就结束了,无需再走后面的action- service-dao-db。带来的好处是服务器压力的减低和客户段页面响应速度的加快。1、 在搭建好ehcache的基础上引入ehcache-web-xx

16、x.jar。2、 在ehcache.xml中配置一个用于缓存网站首页的缓存区,如下: 3、 在web.xml中为添加首页的filter indexCacheFilter net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter cacheName indexCache indexCacheFilter /index.jsp Ok,页面缓存就是这么简单。通过分析SimplePageCachingFilter的源码,我们可以看到,过滤器通过获取HttpServletRequest的 httpRequest.getMethod()+httpRequest.getRequestURI()+httpRequest.getQueryString();作为key,从入缓存中查询页面,若没有则读取页面放入缓存中,若有则直接从缓存中返回。4 卸载1、 去掉jar包: ehcache-xxx.jar或ehcache-core-xxx.jar, ehcache-web-xxx.jar,mybatis-ehcache-xxx.jar。2、 去掉ehcache.xml配置文件。3、 页面缓存,去掉web.xml中的filter配置。4、 Mybatis缓存,去掉xxxMapper.xml中的 配置。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1