EhCache学习(一)

EhCache简介

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

EhCache学习(一)_第1张图片
Ehcache

主要的特性有:

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

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

EhCache的Helloworld工程

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

 
            net.sf.ehcache
            ehcache
            2.10.2
 

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


    
        
            jeesite-repos
            Jeesite Repository
            http://maven.aliyun.com/nexus/content/groups/public
        
    

     
        
            jeesite-repos
            Jeesite Repository
            http://maven.aliyun.com/nexus/content/groups/public
        
     

创建一个测试类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

目录结构如下:

EhCache学习(一)_第2张图片
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学习(一))