美文网首页菜鸟要飞
EhCache学习(一)

EhCache学习(一)

作者: 万总有点菜 | 来源:发表于2017-04-28 00:22 被阅读60次

    EhCache简介

    EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。
    下图是 Ehcache 在应用程序中的位置:

    Ehcache

    主要的特性有:

    • 快速.
    • 简单.
    • 多种缓存策略
    • 缓存数据有两级:内存和磁盘,因此无需担心容量问题
    • 缓存数据会在虚拟机重启的过程中写入磁盘
    • 可以通过RMI、可插入API等方式进行分布式缓存
    • 具有缓存和缓存管理器的侦听接口
    • 支持多缓存管理器实例,以及一个实例的多个缓存区域
    • 提供Hibernate的缓存实现
    • 等等

    在线API doc:http://www.ehcache.org/documentation/

    EhCache的Helloworld工程

    EhCache最新版本是2.X 学习采用2.10.2版本;
    Maven导入

     <dependency>
                <groupId>net.sf.ehcache</groupId>
                <artifactId>ehcache</artifactId>
                <version>2.10.2</version>
     </dependency>
    

    可以在pom文件中加入以下配置,设定maven仓库。

    <!-- 设定主仓库,按设定顺序进行查找。 -->
        <repositories>
            <repository>
                <id>jeesite-repos</id>
                <name>Jeesite Repository</name>
                <url>http://maven.aliyun.com/nexus/content/groups/public</url>
            </repository>
        </repositories>
    <!-- 设定插件仓库 -->
        <pluginRepositories> 
            <pluginRepository>
                <id>jeesite-repos</id>
                <name>Jeesite Repository</name>
                <url>http://maven.aliyun.com/nexus/content/groups/public</url>
            </pluginRepository>
        </pluginRepositories> 
    

    创建一个测试类EhCacheTest

    package com.sima.cache;
    
    import net.sf.ehcache.Cache;
    import net.sf.ehcache.CacheManager;
    import net.sf.ehcache.Element;
    
    import java.net.URL;
    
    /**
     * Created by cfqfz on 2017-04-27.
     */
    public class EhCacheTest {
        public static void main(String[] args){
    
            EhCacheTest ehCacheTest = new EhCacheTest();
            URL url = ehCacheTest.getURL();
            CacheManager manager = CacheManager.newInstance(url);
            Cache cache = manager.getCache("myCache");
            Element element = new Element("sima","Hello World!");
            cache.put(element);
    
            Element element1 = cache.get("sima");
            System.out.println(element1);
    
            cache.flush();
            manager.shutdown();
        }
    
        public URL getURL(){
            return getClass().getResource("/cache.xml");
        }
    }
    

    运行输出:

    com.sima.cache.EhCacheTest
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    [ key = sima, value=Hello World!, version=1, hitCount=1, CreationTime = 1493307901914, LastAccessTime = 1493307901947 ]
    
    Process finished with exit code 0
    

    目录结构如下:

    Paste_Image.png

    EhCache属性说明

    name:缓存名称  
    maxElementsInMemory:内存中最大缓存对象数  
    maxElementsOnDisk:硬盘中最大缓存对象数,若是0表示无穷大  
    eternal:true表示对象永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false  
    overflowToDisk:true表示当内存缓存的对象数目达到了maxElementsInMemory界限后,会把溢出的对象写到硬盘缓存中。注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行。  
    diskSpoolBufferSizeMB:磁盘缓存区大小,默认为30MB。每个Cache都应该有自己的一个缓存区。  
    diskPersistent:是否缓存虚拟机重启期数据  
    diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认为120秒  
    timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了timeToIdleSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地处于空闲状态  
    timeToLiveSeconds:设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有意义  
    memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。可选策略有:LRU(最近最少使用,默认策略)、FIFO(先进先出)、LFU(最少访问次数)。  
    

    EhCache持久化到磁盘

    maxElementsInMemory="0"
    overflowToDisk="true"
    diskPersistent="true"
    配置文件中设置了diskPersistent="true"
    代码中:cache.flush();强硬命令写入硬盘
    运行后硬盘生成了文件。 diskPersistent="true"的含义:diskPersistent:设定在虚拟机重启时是否进行磁盘存储,默认为false。

    相关文章

      网友评论

        本文标题:EhCache学习(一)

        本文链接:https://www.haomeiwen.com/subject/xebnzttx.html