ehcache的使用
ehcache的使用
使用cache主要分为三层:
1.最上层是CacheManager,它是操作Ehcache的入口。可以通过CacheManager.getInstance()获得一个单子的CacheManager,或者通过CacheManager的构造函数创建一个新的CacheManager。
2.每个CacheManger都管理多个Cache。每个Cache都以一种类Hash的方式,关联多个Element。
3.Element就是我们用于存放缓存内容的地方。
一、配置文件示例:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" 4 updateCheck="false"> 5 6 <!-- 指定一个文件目录,当EhCache把数据写到硬盘上时,将把数据写到这个文件目录下 --> 7 <diskStore path="java.io.tempdir"/> 8 9 <!-- 设定缓存的默认数据过期策略 --> 10 <defaultCache 11 maxElementsInMemory="10000" 12 eternal="false" 13 overflowToDisk="true" 14 timeToIdleSeconds="10" 15 timeToLiveSeconds="20" 16 diskPersistent="false" 17 diskExpiryThreadIntervalSeconds="120"/> 18 19 <cache name="Test" maxElementsInMemory="1" eternal="false" overflowToDisk="true" timeToIdleSeconds="1" timeToLiveSeconds="2" 20 diskPersistent="false" diskExpiryThreadIntervalSeconds="1" memoryStoreEvictionPolicy="LFU"> 21 22 </cache> 23 24 </ehcache> 25
各配置参数的含义:
maxElementsInMemory:缓存中允许创建的最大对象数
eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。
timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前,两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是0 就意味着元素可以停顿无穷长的时间。
timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。
overflowToDisk:内存不足时,是否启用磁盘缓存。
memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。LRU和FIFO算法这里就不做介绍。LFU算法直接淘汰使用比较少的对象,在内存保留的都是一些经常访问的对象。对于大部分网站项目,该算法比较适用。
如果应用需要配置多个不同命名并采用不同参数的Cache,可以相应修改配置文件,增加需要的Cache配置即可。
其他:
1.xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"中xsi的意思是 :
本xml文件中要用到某些来自xsi代表的“http://www.w3.org/2001/XMLSchema-instance”这个命名空间的元素 ;
这些元素是包含在xsi命名空间中的,所有的xml文件只要引用这些元素 就要引入xsi这个命名空间;
xsi这三个字母不是硬性规定,只是大家都这么用,方便阅读而已。
2.java.io.tempdir在哪个文件
操作系统不同 这个系统属性所表示的目录也不同:
1.On Windows: java.io.tmpdir:[C:\DOCUME~1\joshua\LOCALS~1\Temp\]
C:\Documents and Settings\Administrator\Local Settings\Temp。
windows系统中有三个临时文件夹,你这个路径指向的只是三个中的一个文件夹,这个电脑路径指向的是你的windows系统用户临时文件夹,你系统用户运行产生的临时文件会被暂时保存在这里,路径中的~表示省略的字符,其真实路径是:C:\Documents and Settings\Administrator\Local Settings\Temp。
剩下的两个临时文件夹是:
C:\Documents and Settings\Administrator\Local Settings\Tempporary Internet Files,IE浏览器临时文件夹。这是一个隐藏的目录,里面存的就是IE浏览器(包括IE浏览器内核浏览器)上网产生的文件,可能保存了你上网听歌看电影的源文件。
C:\Windows\Temp,这个文件加存储着有关系统运行产生的转储文件。
2.On Solaris: java.io.tmpdir:[/var/tmp/]
3.On Linux: java.io.tmpdir: [/tmp]
4.On Mac OS X: java.io.tmpdir: [/tmp]
二、spring使用cache
spring对cache的支持有注解和xml配置两种
1.用@CachePut处理,这中方法需要对指定缓存key保持一致,尽管这样,还是不行,因为它返回的缓存是int(增加或删除或修改的记录数或是该记录的对象,这对我们查询所有或部分记录的缓存还是不可行的)
2.用@CacheEvict(value="myCache",key="0",beforeInvocation=true)处理,清除我们指定key的缓存,这种方式缺点是麻烦,需要我们注意每一个缓存的key
3.用@CacheEvict(value="myCache",allEntries=true,beforeInvocation=true)处理,清除所有缓存,这种方式最省事,但会把其他缓存也一同清除。
结束。