`
tianlijia202
  • 浏览: 74049 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

ehcache 介绍

阅读更多
转自:http://www.josdoc.com/html/chijiuceng/EHCache/gongnenjieshao/200904/30-369.html


1.Overview
   Ehcache 从 Hibernate 发展而来,逐渐涵盖了Cahce界的全部功能,是目前发展势头最好的一个项目。

标准缓存
分布式缓存(基于RMI/JGroups/JMS)
URL,页面片段缓存(类似OSCache的相关部分)
中央缓存服务器(类似Memcached)
2.基本功能与配置
     Ehcache的基本功能,可以从配置文件中学习。详见Ehcache的文档

     总的来说,缓存与HashMap的最大不同,就是缓存设想内存是有限的,缓存的时效性也是有限的,所以可以设定内存数量的大小,可以执行失效算法 ,可以在内存满了的时候,按照最少访问等算法将缓存直接移除或切换到硬盘上。

     另外注意,ehcache的CacheManager本身有一定的默认值。而在没有指定ehcache.xml的情况下, 会使用ehcache.jar里自带的ehcache_failsafe.xml,

2.1 对象在内存中的最大数量
     因为内存是有限的,所以必须用maxElementsInMemory(必填项)设置每类对象在内存中的最大数量。ehcache_failsafe.xml 中为10000。

2.2 到达内存中最大量时的过期/移出算法
      过期算法: 如果缓存已经失效,人道毁灭之。失效算法由3个参数组成:

eternal(必填项):如果为true,则永不过期,忽略后两个参数的设置。ehcache_failsafe.xml 为false.
timeToIdleSeconds: 空闲无访问时间,默认为0,永不过时。ehcache_failsafe.xml 设为120秒。
timeToLiveSeconds: 空闲无访问时间,默认为0,永不过时。ehcache_failsafe.xml 设为120秒。
      移出算法:如果经过失效算法后,还是有很多有效的缓存,则执行清除算法。清除算法由两个参数组成:

memoryStoreEvictionPolicy: 默认为LRU(最近最少访问),另有先进先出(FIFO),最少访问次数(LFU)
overflowToDisk(必填项) 为true,则将清除出来的缓存持久化到磁盘,否则人道毁灭之。
2.3 储存到硬盘
maxElementsOnDisk,默认为0,无限多。ehcache_failsafe.xml为10000000。
diskExpiryThreadIntervalSeconds:使用过期算法清除磁盘中失效对象的间隔,默认为120秒。 
diskSpoolBufferSizeMB ,默认为30M。
2.4  重启时缓存持久化
diskPersistent 当应用重启时,可将缓存先持久化到硬盘,重启后再行载入,节省大量的重新从数据库载入。但只适合那些缓存不怎么变化,或者有特殊机制保证重启后应用能接收到重启这段时间里缓存变化信息的情况。
3. 分布式缓存
     Ehcache 有传统的RMI,1.5版的JGroups,1.6版的JMS,随大流还是先用RMI的好些。

   3.1设置自身
      这里设置在localhost的40001端口上侦听。如果要互相同步的CahceManager不都在一台机器上的话,hostName应该是实际IP。)

<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=localhost, port=40001,socketTimeoutMillis=2000" />  3.2 设置需要同步的对方服务器及缓存对象,
    这里设置与40002端口上的CacheManager同步User与Role对象,如果还有第三台机器,则继续用|分割,继续往下列。同理,在40002端口上的cacheManager的ehcache.xml里,就需要配置与400001,40003的互通)

    也有自动发现,广播的简单配法,但对广播天然恐惧,还是辛苦一点一个个静态列表配置文件的写了,虽然有点烦。

<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,
rmiUrls=//localhost:40002/org.springside.examples.miniweb.entity.user.User|//localhost:40002/org.springside.examples.miniweb.entity.user.Role"/>   3.3 缓存对象的配置
   往每一个需要缓存的对象加入子对象cacheEventListenerFactory

     <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
         properties="replicateAsynchronously=true,
         replicatePuts=true,
         replicateUpdates=true,
         replicateUpdatesViaCopy=true,
         replicateRemovals=true
         asynchronousReplicationIntervalMillis=<number of milliseconds">
         propertySeparator="," />replicateAsynchronously  对象同步是否异步完成,默认为true。如果比较紧急就设为false。
                                        在一致性时间性要求不强的时候,设为异步可大大提供性能,因为它是异步立即返回的,而且可以批量提交。
replicateUpdatesViaCopy 是否将对象变更复制到所有节点,还是只是发送一个失效信息,让对方该缓存失效,当对方需要该缓存时重新计算载入。
默认为true。鉴于对象复制的消耗挺大的,又有锁的问题,而且对方也未必需要该对象,所以此属性建议设为false。如果业务上真的需要设为true时,就可考虑使用Terracotta了。
replicatePuts、replicateUpdates、replicateRemovals  增删改是否同步,默认都为true。但因为我们前面选择了失效算法,所以replicatePuts 要设为false。
  所以我们一般的设置如下:

<cache name="org.springside.examples.miniweb.entity.user.User" maxElementsInMemory="500" overflowToDisk="true"
eternal="true">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicateAsynchronously=false,replicatePuts=false,replicateUpdatesViaCopy=false" />
</cache>3.4 Shutdown
   在分布式环境或持久化硬盘时,需要调用CacheManager的shutdown操作,Hibernate会自动shutdown它自己的cacheManager,如果在hibernate之外使用,你需要增加:

      <listener>
          <listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class>
     </listener>
分享到:
评论

相关推荐

    Ehcache介绍

    Ehcache介绍

    ehcache介绍与说明.docx

    ehcache介绍与说明.docx ehcache

    ehcache知识简介

    整理下ehcache知识介绍,供大家了解

    EHcache缓存框架

    EHcache缓存框架,ehcache介绍与说明,Ehcache详细,EHcache集群环境配置

    EHCache缓存技术介绍

    对数据缓存技术的一个总结,文档比较全面的阐述了缓存类型,功能特性和相关技术。

    简单介绍Ehcache的优缺点

    简单介绍Ehcache的优缺点

    Ehcache经典中文教程

    Ehcache经典中文教程Ehcache内存框架介绍 —高成勇 安装 配置 编码接口介绍 api

    ehcache.xsd_ehcache.xml代码提示.rar

    软件介绍: 已测试有效的ehcache.xsd文件,引入ide中,进行ehcache.xml的代码提示。Windows外壳公用DLL文件,大小23.1KB。

    ehcache基本原理及配置

    介绍了ehcache缓存的基本原理和配置说明

    ehcache-1.6.0.jar

    ehcache-1.6.0.jar ehcache-1.6.0.jar

    Ehcache参考指南(英文版).pdf

    介绍Ehcache这个J2EE缓存框架的详细使用方法

    EHCache 初步使用指南

    介绍 ehcache的导入过程。使用CacheManager 创建并管理Cache,默认的配置文件为ehcache.xml文件,也可以使用不同的配置。

    ehcache详细解读.docx

    网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google;对于API,官网上介绍已经非常清楚,请参见官网;但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍...

    SpringBoot中Shiro缓存使用Redis、Ehcache的方法

    主要介绍了SpringBoot中Shiro缓存使用Redis、Ehcache的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    ehcache-spring-annotations-1.2.0

    它大大简化了在Spring应用中基于业界使用广泛的Ehacche-2.0版本实现缓存的技术,1.1.2版本的ehcache-spring-annotations刚刚发布不久,在本文中,我将会介绍如何在一个web工程时使用ehcache-spring-annotations实现...

    ehcache_doc_2.10.4.zip

    ehcache 最完整的英文文档,当时是从官网下的。里面有每一种缓存的详细介绍,当需要做永久缓存时需要参考这类文档。

    ehcache 总结介绍

    关于ehcache的一些搜集.

    ARCH4系统开发指南

    5.1 EHCache介绍 99 5.2 应用EHCache 99 6 系统的JSP标签库 100 6.1 双击域 100 6.2 &lt;app:validate/&gt; 103 6.3 &lt;app:select/&gt; 103 6.4 和&lt;app:command/&gt; 104 6.5 &lt;app:localeInputName/&gt; 104 6.6 ...

    SpringBoot中使用Ehcache的详细教程

    EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。这篇文章主要介绍了SpringBoot中使用Ehcache的相关知识,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics