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

     结束。

  • 相关阅读:
    [Python] Array Attributes of Numpy lib
    《火球——UML大战需求分析》(第2章 耗尽脑汁的需求分析工作)——2.1 需求分析面面观
    UVA 10201 Adventures in Moving
    《史蒂夫·乔布斯传》官方正式中文版电子书(高清晰完整版)
    为什么要用BitSet
    sed 技巧一例:特定位置插入
    Mac+IPAD上使用wireshark抓包
    【经验谈】XmlSerializer的坑
    HTML语言简单回顾
    不可思议的每日培训(1)——日复一日的每日分享
  • 原文地址:https://www.cnblogs.com/zuzZ/p/8117404.html
Copyright © 2020-2023  润新知