EhCache使用心得

在开发高并发量,高性能的网站应用系统时,缓存Cache起到了很是重要的做用。本文主要介绍EHCache的使用,以及使用EHCache的实践经验。html

一、配置ehcache.xml,不配置将使用默认,建议配置!java

 <ehcache updateCheck="false" dynamicConfig="false">
    <diskStore path="D:/test/ehcache"/>
    <defaultCache
        maxElementsInMemory="1000"
        eternal="false"
        overflowToDisk="true"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"
    />    
   
    <cache name="topCache"
        maxElementsInMemory="10"
        eternal="false"
        timeToIdleSeconds="60"
        timeToLiveSeconds="60"
        overflowToDisk="true"
   /> 

   <cache name="msgCache"
        maxElementsInMemory="10"
        eternal="true"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        diskPersistent="true"
   />
</ehcache> 

而后将文件防止在项目的src目录下,由于下面在建立CacheManager没有指定ehcache.xml路径,那么将使用默认classpath目录下的。

各配置参数的含义:
maxElementsInMemory:缓存中容许建立的最大对象数
eternal:缓存中对象是否为永久的,若是是,超时设置将被忽略,对象从不过时。
timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡以前,两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,若是该值是0 就意味着元素能够停顿无穷长的时间。
timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,若是该值是0就意味着元素能够停顿无穷长的时间。
overflowToDisk:内存不足时,是否启用磁盘缓存。
算法

diskPersistent 是否持久化磁盘缓存,当这个属性的值为true时,系统在初始化时会在磁盘中查找文件名为cache名称,后缀名为index的文件
缓存

memoryStoreEvictionPolic并发

y:缓存满了以后的淘汰算法。LRU和FIFO算法这里就不作介绍。LFU算法直接淘汰使用比较少的对象,在内存保留的都是一些常常访问的对象。对于大部分网站项目,该算法比较适用。
若是应用须要配置多个不一样命名并采用不一样参数的Cache,能够相应修改配置文件,增长须要的Cache配置便可。
高并发

二、测试代码性能

// 使用默认配置文件建立CacheManager
CacheManager manager = CacheManager.create();
// 经过manager能够生成指定名称的Cache对象
Cache cache = cache = manager.getCache("msgCache");

能够经过调用manager.removalAll()来移除全部的Cache。经过调用manager的shutdown()方法能够关闭CacheManager。
有了Cache对象以后就能够进行一些基本的Cache操做,例如:
//往cache中添加元素
Element element = new Element("key", "value");
cache.put(element);
//从cache中取回元素
Element element = cache.get("key");
System,out.println(element.getValue());
//从Cache中移除一个元素
cache.remove("key");
<pre name="code" class="java">// 使用manager移除指定名称的Cache对象
manager.removeCache("msgCache");

 

打印结果 value测试

查看网站

D:/test/ehcache
是否生成缓存
相关文章
相关标签/搜索