缓存服务Ehcache方案

1  Ehcache简介java

  在Java项目普遍的使用。它是一个开源的、设计于提升在数据从RDBMS中取出来的高花费、高延迟采起的一种缓存方案。正由于Ehcache具备健壮性(基于javaweb

开发)、被认证(具备apache 2.0 license)、充满特点,因此被用于大型复杂分布式web application的各个节点中。算法

  具备哪些特点?spring

    1. 够快sql

      Ehcache的发行有一段时长了,通过几年的努力和不可胜数的性能测试,Ehcache终被设计于large, high concurrency systems.apache

    2. 够简单缓存

      开发者提供的接口很是简单明了,从Ehcache的搭建到运用运行仅仅须要的是你宝贵的几分钟。其实不少开发者都不知道本身用在用Ehcache,Ehcache微信

    被普遍的运用于其余的开源项目。
mybatis

    3.够袖珍app

      关于这点的特性,官方给了一个很可爱的名字small foot print ,通常Ehcache的发布版本不会到2M,V 2.2.3 才 668KB。

    4. 够轻量

      核心程序仅仅依赖slf4j这一个包,没有之一!

    5.好扩展

      Ehcache提供了对大数据的内存和硬盘的存储,最近版本容许多实例、保存对象高灵活性、提供LRU、LFU、FIFO淘汰算法,基础属性支持热配置、支持

    的插件多。

    6.监听器

      缓存管理器监听器 (CacheManagerListener)和 缓存监听器(CacheEvenListener),作一些统计或数据一致性广播挺好用的

  如何使用?

    够简单就是Ehcache的一大特点,天然用起来just so easy!

 

  CacheManager manager = CacheManager.newInstance("src/config/ehcache.xml");  

  Ehcache cache = new Cache("testCache", 5000, false, false, 5, 2);       

  cacheManager.addCache(cache);                             

 

  name:缓存名称。

  maxElementsInMemory:缓存最大个数。

  eternal:对象是否永久有效,一但设置了,timeout将不起做用。

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

间无穷大。

  timeToLiveSeconds:设置对象在失效前容许存活时间,最大时间介于建立时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就

是对象存活时 间无穷大。

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

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

  maxElementsOnDisk:硬盘最大缓存个数。

  diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.

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

  memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU。你能够设置为 FIFO或是

  LFU。

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

 

2  springMVC+spring+mybatis+ehcache详细配置

  2.1 首先须要先须要两个主要的jar包

    1 ehcache-core-2.4.6.jar

    2 mybatis-ehcache-1.0.1.jar

    ehcache-core必定要1.3以上的版本 由于1.3以前好像不支持集群的。

  2.2 须要建立一个ehcache.xml在类路径下面

  

<?xml version="1.0" encoding="utf-8"?>   
    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd">
    <diskStore path="java.io.tmpdir"/>  
    <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="30" timeToLiveSeconds="30" overflowToDisk="false"/>  
    <!-- 配置自定义缓存 maxElementsInMemory:缓存中容许建立的最大对象数 eternal:缓存中对象是否为永久的,若是是,超时设置将被忽略,对象从不过时。 timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡以前, 两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效, 若是该值是 0 就意味着元素能够停顿无穷长的时间。 timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值, 这只能在元素不是永久驻留时有效,若是该值是0就意味着元素能够停顿无穷长的时间。 overflowToDisk:内存不足时,是否启用磁盘缓存。 memoryStoreEvictionPolicy:缓存满了以后的淘汰算法。 -->
    <cache name="testCache" maxElementsInMemory="10000" eternal="true" overflowToDisk="false" timeToIdleSeconds="0" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LFU" />  
</ehcache>

  备注:上面的diskStor path 你能够指定某一个路径下,java.io.tmpdir 指的是你系统的缓存目录

  2.3 在spring的配置文件里面加上一段配置:

<!-- 使用ehcache缓存 -->    
   <bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">  
     <property name="configLocation" value="classpath:ehcache.xml" />  
   </bean>

  这样就能够把ehcache和spring整合起来了。

  而后在对应的mapper.xml 里面加上以下配置:

<cache type="org.mybatis.caches.ehcache.LoggingEhcache" >  
    <property name="timeToIdleSeconds" value="3600"/><!--1 hour-->  
    <property name="timeToLiveSeconds" value="3600"/><!--1 hour-->  
    <property name="maxEntriesLocalHeap" value="1000"/>  
    <property name="maxEntriesLocalDisk" value="10000000"/>  
    <property name="memoryStoreEvictionPolicy" value="LRU"/>  
</cache>

  后面的参数配置不加也能够,都会有一个默认值,根据本身的须要来配置,而后这个配置是会带上cache执行的日志,若是不要带日志能够把LogginEhcache改为

EhcacheCache。

  在mapper.xml这样设置了默认是所有操做都会执行缓存策略,若是有某些sql不须要执行,能够把useCache设置为false。

<select id="selectByExample" resultMap="BaseResultMap" parameterType="com.ehcache.manage.entity.TempExample" useCache="false" >

</select>

 

<!-- Start -->

获知及时信息,请关注个人我的微信订阅号:0与1的那点事

 

<!-- End -->

 

本文为博主原创文章,转载请注明出处!

http://www.cnblogs.com/libingbin/

感谢您的阅读。

相关文章
相关标签/搜索