Java Ehcache简单使用

1.ehcache是一个非常轻量级的缓存实现

2.Ehcache的分布式缓存有传统的RMI

3.使用Spring的AOP进行整合,可以灵活的对方法的返回结果对象进行缓存。

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

简单的配置文件

 

配置文件解释如下:

diskStore 保存缓存的位置

defaultCache 默认缓存

name:缓存名称

maxElementInMemory:内存中最大缓存对象数

maxElementOnDisk:磁盘中最大缓存对象数若是0表示无穷大  

enternal: true代表永不过期,会忽略timeToIdleSecondstimeToLiveSeconds属。该值默认为false  

overflowToDisk: true表示内存中对象数达到maxElementInMemory后自动缓存到磁盘中

diskSpoolBufferSizeMB:磁盘缓存区大小,默认为30M。每个Cache都有自己的缓存区大小

diskPersistent:是否缓存虚拟机重启数据

diskExpiryThreadIntervalSeconds:磁盘失效线程间隔时间,默认为120s

timeToidSeconds:允许对象处于空闲状态的最大时间()。0:为无限时间。只有在enternal 值为false时是有效的

timeToLiveSeconds:允许对象存在于缓存中的最长时间()。0:为无限时间。只有在enternal 值为false时是有效的,且值一定要大于timeToidSeconds

memberStoreEvictionPolic:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。可选策略有:LRU(最近最少使用,默认策略)、FIFO(先进先出)、LFU(最少访问次数)

编程实现简单的使用Ehcache:

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

public class TestMain {
    
    public static void main(String[] argv) throws IOException{
        //从class目录中自动查找ehcache.xml配置文件
        CacheManager cacheManager = CacheManager.getInstance();
        //也可以指定查找
        //CacheManager cacheManager = CacheManager.create(getClass().getResource("/ehcache.xml"));
        //从配置文件中获取实例
        Cache cache = cacheManager.getCache("sampleCache1");
        //添加元素
        cache.put(new Element("s14","fasdfasd"));
        cache.put(new Element("s13","fasdfasd"));
        cache.put(new Element("s165","fasdfasd"));
        cache.put(new Element("s12","fasdfasd"));
        cache.put(new Element("s142","fasdfasd"));
        //获取元素
        Element element = cache.get("s14");
        //[ key = s14, value=fasdfasd, version=1, hitCount=1, CreationTime = 1478587083493, LastAccessTime = 1478587083496 ]
        System.out.println(element);
        //将元素永久存储到磁盘上
        cache.flush();
        //卸载缓存管理器
        cacheManager.shutdown();
    }
}

测验缓存是否有效:

import java.io.IOException;

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

public class TestMain {
    
    public static void main(String[] argv) throws IOException{
        //从class目录中自动查找ehcache.xml配置文件
        CacheManager cacheManager = CacheManager.getInstance();
        //从配置文件中获取实例
        Cache cache = cacheManager.getCache("sampleCache1");
        //添加元素
        //获取元素
        Element element = cache.get("s14");
        //[ key = s14, value=fasdfasd, version=1, hitCount=1, CreationTime = 1478587083493, LastAccessTime = 1478587083496 ] 还可以获取到
        System.out.println(element);
        //卸载缓存管理器
        cacheManager.shutdown();
    }
}

在web中使用

在web.xml 可对jsp进行缓存

    <filter>   
        <filter-name>testPageCachingFilter</filter-name>   
        <filter-class>net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter</filter-class>   
    </filter>  
    <filter-mapping>   
        <filter-name>testPageCachingFilter</filter-name>   
        <url-pattern>*.jsp</url-pattern>  
    </filter-mapping> 

这个时候需要将ehcache.xml文件中的Cache配置的name属性必须设置为SimplePageCachingFilter

在RMI中的使用:

在Cache添加如下配置

 参考:http://chenjumin.iteye.com/blog/684926,http://blog.csdn.net/xh199110/article/details/38474061?utm_source=tuicool&utm_medium=referral

http://blog.csdn.net/yuan_little/article/details/11978357

posted @ 2016-11-08 17:47  小严  阅读(243)  评论(0)    收藏  举报