`
lorry1113
  • 浏览: 264445 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ehcache缓存框架

阅读更多

地址:http://ehcache.sourceforge.net

Kernel: ehcache.jar

Xml:ehcache.xml

Xml代码

   1. <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd"> 
   2.     <diskStore path="c:\\temp" /> 
   3.     <cacheManagerEventListenerFactory class="" properties="" /> 
   4.  
   5.     <!--
   6.     Uncomment the following in a clustered configuration.
   7.     --> 
   8.  
   9.     <!--<cacheManagerPeerProviderFactory 
  10.         class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" 
  11.         properties="peerDiscovery=automatic,multicastGroupAddress=230.0.0.1,multicastGroupPort=4446,timeToLive=1" 
  12.         propertySeparator="," 
  13.     /> 
  14.     <cacheManagerPeerListenerFactory 
  15.         class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
  16.     />--> 
  17.  
  18.     <!-- 
  19.     Hibernate will use the defaultCache unless custom configurations are defined 
  20.     below for individual domain objects, collection, queries, etc. 
  21.     --> 
  22.  
  23.     <defaultCache 
  24.         maxElementsInMemory="10000" 
  25.         eternal="false" 
  26.         timeToIdleSeconds="600" 
  27.         overflowToDisk="true" 
  28.     > 
  29.         <!--<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" /> 
  30.         <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />--> 
  31.     </defaultCache> 
  32.      
  33.     <!-- 
  34.     The cache name is the same as the class name specified in your Hibernate 
  35.     mapping file. 
  36.     --> 
  37.  
  38.     <cache 
  39.         name="sampleCache" 
  40.         maxElementsInMemory="5" 
  41.         maxElementsOnDisk="100"  
  42.         eternal="false" 
  43.         timeToIdleSeconds="2"  
  44.         timeToLiveSeconds="2" 
  45.         overflowToDisk="true" 
  46.     > 
  47.         <!--<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" /> 
  48.         <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />--> 
  49.     </cache> 
  50. </ehcache> 

<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界限后,会把益出的对象写到基于硬盘的缓存中。



使用:
Java代码

   1. CacheManager cacheManager = EhcachePlugIn.getCacheManager(); 
   2. Cache cache = cacheManager.getCache("sampleCache"); 

CacheManager cacheManager = EhcachePlugIn.getCacheManager();
Cache cache = cacheManager.getCache("sampleCache");

EhcachePlugIn可以自定义为任何工厂,作用是返回一个CacheManager实例。


Java代码

   1. cacheManager.getCache("sampleCache"); 

cacheManager.getCache("sampleCache");

参数为ehcache文件中<cache>元素的name属性。



引入ehcache.xml
Java代码

   1. URL url = getClass().getResource("/"+xmlPath); 
   2. cacheManager = new CacheManager(url); 

URL url = getClass().getResource("/"+xmlPath);
cacheManager = new CacheManager(url);

xmlPath为ehcache.xml在classpath下的具体路径。



对象的存储
Java代码

   1. CacheManager cacheManager = EhcachePlugIn.getCacheManager(); 
   2. Cache cache = cacheManager.getCache("sampleCache"); 
   3. System.out.println("The Key In Cache?:"+cache.isKeyInCache(EHCACHE_KEY)); 
   4. System.out.println("Cache is :"+cache); 
   5.          
   6.         Element result = cache.get(EHCACHE_KEY); 
   7.          
   8.         if(null==result) 
   9.         { 
  10.             System.out.println("No Data In Ehcache"); 
  11.             List list = new ArrayList(); 
  12.              
  13.             for(int i=20;i<50;i++) 
  14.             { 
  15.                 Student student = new Student(26,"kook"+i); 
  16.                 list.add(student); 
  17.             } 
  18.             cache.put(new Element(EHCACHE_KEY,list)); 
  19.             cache.flush(); 
  20.              
  21.             result = cache.get(EHCACHE_KEY); 
  22.         } 
  23.  
  24.         List ehcacheList = (List)result.getValue(); 
  25.          
  26.         Iterator iter =  ehcacheList.iterator(); 
  27.          
  28.         while (iter.hasNext()) { 
  29.             Student element = (Student) iter.next(); 
  30.             System.out.println("Studeng name is:"+element.getName()); 
  31.         } 

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接口才行。



详细代码在附件中,为一个完成的ECLIPSE PROJECT.
分享到:
评论

相关推荐

    EHcache缓存框架

    **EHcache缓存框架** EHcache是一款开源的Java缓存框架,它被广泛应用于提高应用程序的性能和响应速度,通过存储频繁访问的数据到内存中,避免了每次请求时都进行昂贵的数据库查询。EHcache的设计目标是轻量级、高...

    基于SpringBoot+Layui搭建的学生管理系统源码,融合shiro安全框架和Ehcache缓存框架.zip

    基于SpringBoot+Layui搭建的学生管理系统源码,融合shiro安全框架和Ehcache缓存框架.zip基于SpringBoot+Layui搭建的学生管理系统源码,融合shiro安全框架和Ehcache缓存框架.zip 【备注】 该项目是个人毕设项目,...

    借助Ehcache缓存框架实现对页面的缓存Demo

    本工程用于研究如何借助Ehcache缓存框架实现对页面的缓存 本工程编码方式:UTF-8 本工程开发工具:MyEclipse 说明: 1、ehcache.xml和ehcache.xsd两个文件可以在下在下载下来的名为“ehcache-core-x.x.x-...

    基于SpringBoot+Layui+shiro安全框架和Ehcache缓存框架搭建的学生管理系统源码+项目说明.zip

    1、基于SpringBoot+Layui+shiro安全框架和Ehcache缓存框架搭建的学生管理系统源码+项目说明.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末...

    基于SpringBoot+Layui搭建的学生管理系统,融合shiro安全框架和Ehcache缓存框架.zip

    "基于SpringBoot+Layui搭建的学生管理系统,融合shiro安全框架和Ehcache缓存框架" 这个标题揭示了项目的核心技术栈和应用场景。SpringBoot是一个快速开发框架,用于简化Spring应用的初始搭建以及开发过程。Layui则是...

    SpringBoot+Layui搭建的学生管理系统,加入了shiro安全框架和Ehcache缓存框架.zip

    【标题】"SpringBoot+Layui搭建的学生管理系统,加入了shiro安全框架和Ehcache缓存框架"是一个综合性的项目,它展示了如何利用Java技术栈构建一个实用的管理信息系统。这个项目的核心技术包括SpringBoot、Layui、...

    ehcache缓存框架

    ### Ehcache缓存框架知识点详解 #### 一、Ehcache简介 Ehcache是一个开源的、纯Java的缓存框架。它支持多种缓存机制,既可以作为本地缓存使用,也可以通过网络来共享缓存数据。Ehcache提供了一个简单易用的API,...

    Ehcache缓存框架的简单应用

    Ehcache是一个开源的、高性能的Java缓存框架,它被广泛用于提高应用程序的性能,减少数据库的负载,以及优化数据访问。在本文中,我们将深入探讨Ehcache的基本概念、配置、使用方法以及其在实际应用中的优势。 **...

    Ehcache缓存框架整合Spring和shiro权限配置

    缓存可以提高查询数据性能, 对同一批数据进行多次查询时, 第一次查询走数据库, 查询数据后,将数据保存在内存中,第二次以后查询 可以直接从内存获取数据,而不需要 和数据库进行交互。

    EHCache 缓存框架包

    很强大的缓存框架包,最新ehcahe的框架jar包

    缓存框架-Ehcache学习笔记

    **缓存框架 Ehcache 学习笔记** Ehcache 是一个广泛使用的开源 Java 缓存框架,它在处理大量数据的高性能应用中扮演着重要角色。Ehcache 提供了本地内存缓存、磁盘存储以及分布式缓存的能力,使得应用程序能够快速...

    基于java的开发源码-Ehcache Java 缓存框架.zip

    基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-...

    Spring Boot 简单使用EhCache缓存框架的方法

    Spring Boot 简单使用 EhCache 缓存框架的方法 Spring Boot 是一个流行的 Java 框架,用于构建基于 Web 的应用程序。在 Spring Boot 应用程序中,缓存机制是非常重要的,因为它可以提高应用程序的性能和响应速度。...

Global site tag (gtag.js) - Google Analytics