`
raymond.chen
  • 浏览: 1436928 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

EhCache介绍

阅读更多

ehcache是一个非常轻量级的缓存实现,而且从1.2之后就支持了集群,而且是hibernate默认的缓存provider。EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。

 

Ehcache的分布式缓存有传统的RMI,1.5版的JGroups,1.6版的JMS。分布式缓存主要解决集群环境中不同的服务器间的数据的同步问题。

 

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

 

CachingFilter功能可以对HTTP响应的内容进行缓存。

 

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

 

2、配置文件介绍(普通缓存) 

<ehcache>
	<!-- 指定一个文件目录,当EHCache把数据写到硬盘上时,将把数据写到这个文件目录下 -->
	<diskStore path="java.io.tmpdir"/>

	<!-- 设定缓存的默认数据过期策略 -->
	<defaultCache
			maxElementsInMemory="10000"
			eternal="false"
			overflowToDisk="true"
			timeToIdleSeconds="0"
			timeToLiveSeconds="0"
			diskPersistent="false"
			diskExpiryThreadIntervalSeconds="120"/>
	
	<!--  
		设定具体的命名缓存的数据过期策略

		cache元素的属性:
			name:缓存名称
			
			maxElementsInMemory:内存中最大缓存对象数
			
			maxElementsOnDisk:硬盘中最大缓存对象数,若是0表示无穷大
			
			eternal:true表示对象永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false
			
			overflowToDisk:true表示当内存缓存的对象数目达到了maxElementsInMemory界限后,会把溢出的对象写到硬盘缓存中。注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行。
			
			diskSpoolBufferSizeMB:磁盘缓存区大小,默认为30MB。每个Cache都应该有自己的一个缓存区。
			
			diskPersistent:是否缓存虚拟机重启期数据
			
			diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认为120秒

			timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了timeToIdleSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地处于空闲状态
			
			timeToLiveSeconds:设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有意义

			memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。可选策略有:LRU(最近最少使用,默认策略)、FIFO(先进先出)、LFU(最少访问次数)。
	-->
	<cache name="CACHE1"
		   maxElementsInMemory="1000"
		   eternal="true"
		   overflowToDisk="true"/>  
		   
	<cache name="CACHE2"
        maxElementsInMemory="1000"
        eternal="false"
        timeToIdleSeconds="200"
        timeToLiveSeconds="4000"
        overflowToDisk="true"/>
</ehcache>

 

3、配置文件介绍(分布式缓存) 

     1)RMI集群模式

          A、手工发现

               需要指定节点发现模式peerDiscovery值为manual,rmiUrls设置为另一台服务器的IP、端口和缓存名等信息。

<cacheManagerPeerProviderFactory 
    class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" 
    properties="peerDiscovery=manual,
    rmiUrls=//192.168.0.12:4567/oschina_cache|//192.168.0.13:4567/oschina_cache"
/>

  

          B、自动发现

                需要指定节点发现模式peerDiscovery值为automatic自动,同时组播地址可以指定D类IP地址空间,范围从 224.0.1.0 到 238.255.255.255 中的任何一个地址。

<cacheManagerPeerProviderFactory
    class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
    properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,
    multicastGroupPort=4446, timeToLive=32"
/>

 

           需要在每个cache属性中加入
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>

<cache name="demoCache"
	maxElementsInMemory="10000"
	eternal="true"
	overflowToDisk="true">
	<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
</cache> 

         

4、通过编程方式使用EhCache

//从classes目录查找ehcache.xml配置文件
CacheManager cacheManager = CacheManager.getInstance();

//从classes目录查找指定名称的配置文件
//CacheManager cacheManager = CacheManager.create(getClass().getResource("/ehcache.xml"));

//根据配置文件获得Cache实例
Cache cache = cacheManager.getCache("CACHE1");

//清空Cache中的所有元素
cache.removeAll();

//往Cache中添加元素
cache.put(new Element("s1", "11111"));
cache.put(new Element("s2", "22222"));
cache.put(new Element("s3", "33333"));

//从Cache中取得元素
Element e = cache.get("s3");
System.out.println(e.getValue());

//卸载缓存管理器
cacheManager.shutdown();

 

5、页面缓存

     在web.xml文件中配置过滤器。此处对test_tag.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>/test_tag.jsp</url-pattern>
</filter-mapping>

  

    在ehcache.xml文件中配置Cache节点。注意:cache的name属性必需为SimplePageCachingFilter。

<cache name="SimplePageCachingFilter" 
   maxElementsInMemory="10" 
   overflowToDisk="true" 
   eternal="false" 
   timeToIdleSeconds="100" 
   timeToLiveSeconds="100"
   memoryStoreEvictionPolicy="LFU" />

 

分享到:
评论
2 楼 ooo456mmm 2015-01-14  
mark一下
1 楼 y1051200 2014-11-11  
ddddddddd

相关推荐

    缓存框架:ehcache介绍

    ### 缓存框架:ehcache介绍 #### 一、ehcache概述 Ehcache是一款流行的Java缓存框架,被广泛应用于提升应用性能和减少后端数据库的交互次数。通过将频繁访问的数据存储在内存中,ehcache能够显著提高应用程序的...

    ehcache介绍与说明.docx

    【ehcache】是一个轻量级的缓存框架,它在1.2版本之后就开始支持集群模式,同时是Hibernate默认的缓存提供者。Ehcache完全用Java编写,设计为进程内的缓存框架,具有快速、简洁的特点。它可以单独使用,也可以与...

    ehcache 介绍

    ### Ehcache概述与核心特性详解 #### 一、引言 Ehcache 是一款非常流行的纯 Java 开源缓存框架,以其配置简单、结构清晰、功能强大而著称。最初,人们通过 Hibernate 的缓存机制了解到它。本文旨在深入探讨 ...

    ehcache官方文档

    1. **Ehcache介绍**: Ehcache是一个内存管理工具,它允许应用程序存储和快速检索数据。它支持本地内存缓存,同时也支持分布式缓存模式,以便在多节点环境中扩展。Ehcache基于Terra cotta技术,可以实现高可用性和...

    ehcache知识简介

    ### Ehcache知识详解 #### 一、概述 Ehcache是一款功能强大且高效的纯Java开源缓存框架。作为当前最受欢迎的缓存方案之一,Ehcache以其简单的配置、清晰的结构以及强大的功能著称。其最初的知名度来源于作为...

    spring+ehcache

    1. **Ehcache介绍** Ehcache是一个开源的、基于内存的分布式缓存系统,能够存储对象并提供高速访问。它支持缓存数据的持久化,可以在多个JVM之间共享,并且可以配置为在磁盘上溢出,当内存不足时使用。 2. **...

    hibernate整合ehcache的jar包.zip

    Ehcache介绍** Ehcache是一个内存缓存系统,用于存储临时数据,以提高数据检索速度。它可以缓存任何Java对象,并且支持本地和分布式缓存模式。Ehcache具有自动过期、内存管理和磁盘存储等功能,保证了缓存的高效和...

    高并发缓存器(基于ehcache)

    **一、Ehcache介绍** Ehcache是一款开源的Java缓存框架,最初由Greg L. Turnquist创建,现已成为Terracotta公司的产品。Ehcache支持本地缓存、分布式缓存和 terracotta 集群模式,广泛应用于Java Web应用和企业级...

    ehcache缓存页面.doc

    1. **Ehcache介绍** - Ehcache是一个开源的、高性能的内存缓存解决方案,支持本地和分布式缓存模式,广泛应用于Java应用中。 2. **缓存机制** - Ehcache是如何通过存储数据在内存中来减少数据库交互,提高应用程序...

    EHCache缓存技术介绍

    【EHCache缓存技术介绍】 缓存技术是提高软件系统性能的重要手段,特别是在处理大量数据时,通过将常用数据存储在内存中,可以显著减少对硬盘或数据库的访问,从而加快数据获取速度。EHCache是一种广泛使用的开源...

    hibernate二级缓存相关插件(EHcache)

    **二、EHcache介绍** EHcache是一款广泛使用的开源Java缓存解决方案,它不仅支持本地缓存,还支持分布式缓存。在Hibernate中,EHcache作为二级缓存插件,提供了一种高效且可扩展的缓存策略。它具有内存和磁盘存储两...

    简单介绍Ehcache的优缺点

    ### Ehcache:Java环境下高效缓存管理的利器 在探讨Ehcache的优缺点之前,我们首先需要了解Ehcache是什么。Ehcache是Java环境下的一款高性能、分布式内存对象缓存系统,它能够显著提高应用的性能和响应速度,尤其在...

    ehcache配置使用详解

    **背景介绍:** 缓存作为提升系统响应速度和降低数据库压力的关键技术,在现代软件架构中占据着重要位置。ehcache,作为一款高性能的开源Java缓存框架,旨在简化缓存的管理和使用,为开发者提供了灵活且强大的缓存...

    Spring+Ehcache集成

    本篇文章将详细介绍如何在Spring项目中集成Ehcache,以及如何通过Spring的AOP(面向切面编程)实现方法级别的缓存注解。 首先,我们需要在项目中引入Ehcache的依赖。通常,这可以通过在`pom.xml`文件中添加Maven...

    SpringBoot 集成Ehcache实现缓存

    下面将详细介绍如何在一个Spring Boot项目中集成并使用Ehcache缓存。 ##### 1. 创建项目 首先,使用IDEA创建一个Maven类型的Spring Boot项目。确保项目结构符合Spring Boot的标准。 ##### 2. 数据库初始化 为了...

    EHCache.jar和文档

    2. **配置详解**:介绍XML配置文件的各个元素和属性,如cache元素、diskStore元素、defaultCache元素等。 3. **API使用**:展示如何在代码中创建、获取、更新和移除缓存项,以及如何设置和使用缓存策略。 4. **...

    springmvc Ehcache

    本文将详细介绍如何将Ehcache集成到Spring MVC应用中,以及如何进行测试和配置。 **一、Ehcache简介** Ehcache是一个开放源代码的、内存级别的、分布式缓存系统。它可以有效地减少数据库负载,提高应用程序的运行...

    ehcache缓存的jar包和配置文件

    下面将详细介绍Ehcache的核心概念、配置以及如何在项目中使用。 1. Ehcache核心概念: - 缓存:缓存是存储临时数据的地方,以便快速检索。Ehcache提供内存和磁盘存储,可以设置不同的缓存策略。 - 缓存管理器...

    cache/ehcache缓存使用

    本文将详细讲解"cache/ehcache缓存使用"的相关知识点,包括缓存的基本概念、Ehcache的介绍、以及如何在Java应用中使用Ehcache进行缓存操作。 首先,我们要理解什么是缓存。缓存是一种存储技术,它临时存储常用或...

Global site tag (gtag.js) - Google Analytics