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~1joshuaLOCALS~1Temp]

    C:Documents and SettingsAdministratorLocal SettingsTemp。

  windows系统中有三个临时文件夹,你这个路径指向的只是三个中的一个文件夹,这个电脑路径指向的是你的windows系统用户临时文件夹,你系统用户运行产生的临时文件会被暂时保存在这里,路径中的~表示省略的字符,其真实路径是:C:Documents and SettingsAdministratorLocal SettingsTemp。

  剩下的两个临时文件夹是:

  C:Documents and SettingsAdministratorLocal SettingsTempporary Internet Files,IE浏览器临时文件夹。这是一个隐藏的目录,里面存的就是IE浏览器(包括IE浏览器内核浏览器)上网产生的文件,可能保存了你上网听歌看电影的源文件。           

  C:WindowsTemp,这个文件加存储着有关系统运行产生的转储文件。

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)处理,清除所有缓存,这种方式最省事,但会把其他缓存也一同清除。

 结束。

原文地址:https://www.cnblogs.com/zuzZ/p/8117404.html