ehcache入门实例

官网地址: http://ehcache.org/

一、简介:

Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序

ehcache是一个用Java实现的使用简单,高速,实现线程安全的缓存管理类库,ehcache提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案。是Hibernate中默认的CacheProvider。

Ehcache的类层次模型主要为三层:

    CacheManager:操作Ehcache的入口;管理着多个Cache

    Cache:以一种类Hash的方式,关联着多个Elemenat

    Element:存放缓存内容

我们可以通过CacheManager.getInstance()获得一个单个的CacheManager,或者通过CacheManager的构造函数创建一个新的CacheManager。


ehcache的刷新策略

ehcache的刷新策略是当缓存在放入的时候记录一个放入时间,它是用Lazy Evict的方式,在取的时候同设置的TTL比较TTL比较。
ehcache缓存的3种清空策略
       FIFO,先进先出
      LFU,最少被使用,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。
      LRU,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。

ehcache特性:

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

二、简单配置:

  pom中引入依赖:各版本依赖网址:http://www.mvnrepository.com/artifact/net.sf.ehcache/ehcache

   

       net.sf.ehcache

      ehcache

      2.10.2

  ehcache.xml配置文件:

  1.     xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
  2.     updateCheck="false">
  3.     
  4.    
  5.     
  6.                   maxElementsInMemory="1000"
  7.                   overflowToDisk="false" 
  8.                   diskPersistent="false" 
  9.                   timeToIdleSeconds="0"
  10.                   timeToLiveSeconds="600" 
  11.                   memoryStoreEvictionPolicy="LRU" />
  12.      
  13.     
  14.                   eternal="false" 
  15.                   maxElementsInMemory="200"
  16.                   overflowToDisk="false" 
  17.                   diskPersistent="false" 
  18.                   timeToIdleSeconds="300"
  19.                   timeToLiveSeconds="600" 
  20.                   memoryStoreEvictionPolicy="LRU" />
  21.  

                cache :自定义的缓存,可以包含多个cache节点

name : 缓存的名称,可以通过指定名称获取指定的某个Cache对象

maxElementsInMemory :内存中允许存储的最大的元素个数,0代表无限个

clearOnFlush:内存数量最大时是否清除。

eternal :设置缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。根据存储数据的不同,例如一些静态不变的数据如省市区等可以设置为永不过时

timeToIdleSeconds : 设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。

timeToLiveSeconds :缓存数据的生存时间(TTL),也就是一个元素从构建到消亡的最大时间间隔值,只能在eternal=false对象不是永久有效时使用,如果该值是0就意味着元素可以停顿无穷长的时间。

overflowToDisk :内存不足时,是否启用磁盘缓存。

maxEntriesLocalDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。

maxElementsOnDisk:硬盘最大缓存个数。

diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。

diskPersistent:是否在VM重启时存储硬盘的缓存数据。默认值是false。

diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。

三、获取配置对象:

   创建缓存管理器CacheManager

     1)默认配置

       CacheManager  cacheManager = CacheManager.create();

       CacheManager  cacheManager = CacheManager.newInstance();

    2)ehcache.xml配置

      CacheManager  cacheManager =  CacheManager.create("ehcache.xml") 

      CacheManager  cacheManager = CacheManager.newInstance("ehcache.xml");

       InputStream inputStream = new FileInputStream(new File("ehcache.xml"));

      CacheManager   cacheManager = CacheManager.newInstance(inputStream);

   创建缓存Cache

      Cache cache = cacheManager.getCache("menuCache");

  创建元素

      Element element = new Element("key", "value");

  将元素添加到缓存

      cache.put(element);

  获取缓存

      Element value = cache.get("key");

 删除元素

      cache.remove("key");

刷新缓存

      cache.flush();

关闭缓存管理器

     cacheManager.shutdown();

四、spring整合

 

  1.          
  2.          

注解使用:

  @Cacheable(value="menuCache", key ="#key")
    public List

getAllMenuByKey(String key) {
        return MenuMapper.getAllMenuByKey(key);
    }

你可能感兴趣的:(ehcache,spring)