Xml:ehcache.xml
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd">
<diskStore path="c:\\temp" />
<cacheManagerEventListenerFactory class="" properties="" />
<!--
Uncomment the following in a clustered configuration.
-->
<!--<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=automatic,multicastGroupAddress=230.0.0.1,multicastGroupPort=4446,timeToLive=1"
propertySeparator=","
/>
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
/>-->
<!--
Hibernate will use the defaultCache unless custom configurations are defined
below for individual domain objects, collection, queries, etc.
-->
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="600"
overflowToDisk="true"
>
<!--<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
<bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />-->
</defaultCache>
<!--
The cache name is the same as the class name specified in your Hibernate
mapping file.
-->
<cache
name="sampleCache"
maxElementsInMemory="5"
maxElementsOnDisk="100"
eternal="false"
timeToIdleSeconds="2"
timeToLiveSeconds="2"
overflowToDisk="true"
>
<!--<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
<bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />-->
</cache>
</ehcache>
以上ehcache.xml是ehcache的配置文件,并且存放在应用的classpath中。下面是对该XML文件中的一些元素及其属性的相关说明:
<diskStore>元素:指定一个文件目录,当EHCache把数据写到硬盘上时,将把数据写到这个文件目录下。
<defaultCache>元素:设定缓存的默认数据过期策略。
<cache>元素:设定具体的命名缓存的数据过期策略。
<cache>元素的属性
name:缓存名称。通常为缓存对象的类名(非严格标准)。
maxElementsInMemory:设置基于内存的缓存可存放对象的最大数目。
maxElementsOnDisk:设置基于硬盘的缓存可存放对象的最大数目。
eternal:如果为true,表示对象永远不会过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false;
timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了timeToIdleSeconds属性值,这个对象就会过期。当对象过期,EHCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地处于空闲状态。
timeToLiveSeconds:设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期。当对象过期,EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有意义。
overflowToDisk:如果为true,表示当基于内存的缓存中的对象数目达到了maxElementsInMemory界限后,会把益出的对象写到基于硬盘的缓存中。
使用:
CacheManager cacheManager = EhcachePlugIn.getCacheManager();
Cache cache = cacheManager.getCache("sampleCache");
EhcachePlugIn可以自定义为任何工厂,作用是返回一个CacheManager实例。
cacheManager.getCache("sampleCache");
参数为ehcache文件中<cache>元素的name属性。
引入ehcache.xml
-
URL url = getClass().getResource("/"+xmlPath);
cacheManager = new CacheManager(url);
xmlPath为ehcache.xml在classpath下的具体路径。
对象的存储
CacheManager cacheManager = EhcachePlugIn.getCacheManager();
Cache cache = cacheManager.getCache("sampleCache");
System.out.println("The Key In Cache?:"+cache.isKeyInCache(EHCACHE_KEY));
System.out.println("Cache is :"+cache);
Element result = cache.get(EHCACHE_KEY);
if(null==result)
{
System.out.println("No Data In Ehcache");
List list = new ArrayList();
for(int i=20;i<50;i++)
{
Student student = new Student(26,"kook"+i);
list.add(student);
}
cache.put(new Element(EHCACHE_KEY,list));
cache.flush();
result = cache.get(EHCACHE_KEY);
}
List ehcacheList = (List)result.getValue();
Iterator iter = ehcacheList.iterator();
while (iter.hasNext()) {
Student element = (Student) iter.next();
System.out.println("Studeng name is:"+element.getName());
}
注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行。
分享到:
相关推荐
本文将详细讲解"cache/ehcache缓存使用"的相关知识点,包括缓存的基本概念、Ehcache的介绍、以及如何在Java应用中使用Ehcache进行缓存操作。 首先,我们要理解什么是缓存。缓存是一种存储技术,它临时存储常用或...
**Ehcache缓存** Ehcache是一种广泛使用的开源Java分布式缓存系统,它为高性能应用程序提供了内存存储和缓存解决方案。在Java世界中,尤其是在持久化框架如Hibernate的使用中,Ehcache扮演了至关重要的角色。由于...
【EHCache缓存技术介绍】 缓存技术是提高软件系统性能的重要手段,特别是在处理大量数据时,通过将常用数据存储在内存中,可以显著减少对硬盘或数据库的访问,从而加快数据获取速度。EHCache是一种广泛使用的开源...
为了提高性能和减少对数据库的直接访问,MyBatis 提供了缓存功能,而Ehcache 是一个广泛使用的开源Java缓存库,可以集成到MyBatis 中以实现高效的缓存管理。 在MyBatis 中添加Ehcache 缓存支持,首先需要确保项目...
EHCache缓存的说明文档是到处找来的内容,都有参考链接指向原地址。有三个测试项目也在里面:一个整合了Struts2或Hibernate,一个整合了MyBatis3,这两个是我做的;另一个ehcachetest是下载了別人的。
**EHcache缓存框架** EHcache是一款开源的Java缓存框架,它被广泛应用于提高应用程序的性能和响应速度,通过存储频繁访问的数据到内存中,避免了每次请求时都进行昂贵的数据库查询。EHcache的设计目标是轻量级、高...
### JavaWeb中Ehcache缓存配置详解 在JavaWeb应用开发中,缓存技术扮演着至关重要的角色,它能够显著提升应用性能和响应速度,减少数据库负担。Ehcache作为一款广泛使用的开源缓存解决方案,其高效、灵活的特性受到...
ehcache 缓存配置详解 Ehcache 是一个流行的 Java 缓存框架,提供了强大的缓存机制,帮助开发者提高应用程序的性能和可扩展性。 Ehcache 的配置主要包括 diskstore、defaultCache、cache 三个部分,这三个部分的...
**Ehcache缓存系统详解** Ehcache是一款开源、高性能、轻量级的Java缓存框架,广泛应用于各种Java应用程序中,以提高数据访问速度并降低数据库负载。它的核心特性包括内存缓存、磁盘存储和分布式缓存,使得在大数据...
本工程用于研究如何借助Ehcache缓存框架实现对页面的缓存 本工程编码方式:UTF-8 本工程开发工具:MyEclipse 说明: 1、ehcache.xml和ehcache.xsd两个文件可以在下在下载下来的名为“ehcache-core-x.x.x-...
在这个“ehcache缓存入门项目”中,我们将深入探讨EhCache的基本概念、配置、使用方法以及一些实用技巧。 1. **EhCache简介** EhCache是一个基于内存的分布式缓存解决方案,它可以存储对象并提供快速访问。它支持...
"ehcache缓存依赖的jar"这个标题暗示我们将讨论Ehcache的核心库及其依赖关系。 Ehcache的核心JAR文件是`ehcache.jar`,它包含了Ehcache的所有核心组件和接口。这个文件提供了缓存管理、缓存配置、缓存策略(如LRU、...
基于SpringBoot+Layui搭建的学生管理系统源码,融合shiro安全框架和Ehcache缓存框架.zip基于SpringBoot+Layui搭建的学生管理系统源码,融合shiro安全框架和Ehcache缓存框架.zip 【备注】 该项目是个人毕设项目,...
### ehcache缓存的配置详解 #### 一、ehcache简介 ehcache 是一款开源的高性能 Java 缓存框架,广泛应用于 Java 应用程序中,用于提高应用程序性能。通过在内存或磁盘中存储数据副本,ehcache 可以减少数据库访问...
在本篇《Mybatis入门实例(二)——添加ehcache缓存支持》中,我们将深入探讨如何在Mybatis框架中集成Ehcache作为二级缓存,以提高数据访问的效率和性能。Ehcache是一个开源的Java分布式缓存,广泛用于缓存应用程序中...
**Spring+EhCache缓存实例详解** 在现代的Java企业级应用中,缓存技术扮演着至关重要的角色,它能够显著提升系统性能,减少数据库负载。Spring框架与EhCache的结合,为开发者提供了一种高效、易用的缓存解决方案。...
**标题解析:** "ehcache缓存页面.doc" 这个标题表明了文档内容主要关于Ehcache,一个广泛使用的Java缓存库,用于提高应用程序性能。它可能详细介绍了Ehcache如何被用来缓存页面内容,以减少数据库查询和提升响应...
为了解决这个问题,我们需要配置EhCache缓存集群,以确保数据更新能在各个进程中同步。以下是如何使用EhCache实现缓存集群的详细步骤: 首先,确保缓存对象是可序列化的。在上述例子中,`User`实体需要实现`...
标题 "mybatis3添加Ehcache缓存" 涉及到的是在MyBatis框架中集成Ehcache作为二级缓存的配置和使用。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Ehcache则是一个广泛使用的Java缓存解决...