`

Ehcache 入门

    博客分类:
  • j2ee
阅读更多

一 Ehcache 简介

Ehcache是一个纯Java的进程内缓存框架。

对于缓存数据:

1.最原始的就是通过static静态变量将数据直接缓存在内容中

2.将部分数据缓存在内容中,部分缓存在磁盘上。因为可能内存容量不够。

Ehcache就可以将数据保存在内存和磁盘上。当然Ehcache保存数据的时候还可以配置各种策略。

但是Ehcache最实际的作用就是缓存数据在内存及磁盘上。

 

二 Ehcache 简单Demo

CacheControllor.java

package com;
import java.io.InputStream;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;

public class CacheControllor {
	private static InputStream is=Main.class.getClassLoader().getResourceAsStream("com/ehcache.xml");
	private static CacheManager manager=new CacheManager(is);
	
	public static Cache addCache(String cacheName) {
		manager.addCache(cacheName);
		return manager.getCache(cacheName);
	}
	
	public static Cache getCache(String cacheName){
		return manager.getCache(cacheName);
	}
	
	public static void removeCache(String cacheName){
		manager.removeCache(cacheName);
	}

}

 DefaultCacheManagerEventListener.java

package com;
import net.sf.ehcache.CacheException;
import net.sf.ehcache.Status;
import net.sf.ehcache.event.CacheManagerEventListener;
public class DefaultCacheManagerEventListener implements CacheManagerEventListener{
	@Override
	public void dispose() throws CacheException {
		System.out.println("==================== dispose ====================");
	}
	@Override
	public Status getStatus() {
		return Status.STATUS_ALIVE;
	}
	@Override
	public void init() throws CacheException {
		System.out.println("==================== init CacheManagerEventListenerfactory ====================");
	}
	@Override
	public void notifyCacheAdded(String str) {
		System.out.println("==================== notify cache added "+str+" ==================== ");
	}
	@Override
	public void notifyCacheRemoved(String str) {
		System.out.println("==================== notify cache removed "+str+" ==================== ");
	}
}

 DefaultCacheManagerEventListenerFactory.java

package com;

import java.util.Properties;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.event.CacheManagerEventListener;
import net.sf.ehcache.event.CacheManagerEventListenerFactory;

public class DefaultCacheManagerEventListenerFactory extends CacheManagerEventListenerFactory {
	@Override
	public CacheManagerEventListener createCacheManagerEventListener(
			CacheManager cacheManager, Properties props) {
		System.out.println("properties:" + props);
		return new DefaultCacheManagerEventListener();
	}
}

 ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="ehcache.xsd"
         updateCheck="true" monitoring="autodetect"
         dynamicConfig="true">
    <!-- 设置磁盘存储目录 -->
    <diskStore path="C:\temp\ehcache"/>
    
    <!-- 设置CacheManagerEventListener,当cache被创建或者删除时,会调用listener的相关方法。 -->
    <cacheManagerEventListenerFactory class="com.DefaultCacheManagerEventListenerFactory" properties="1=1,2=2,3=3,4=4"/>

	<!-- 集群发现其他CacheManager -->
    <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"/>
    
    <!-- 
    	maxEntriesLocalHeap:设置堆内存中的最大存储对象。如果设置为0,则没有限制。
    	eternal: 是指保存元素是否是永久的,如果是,则超时设置会被忽略,元素永远不过期。
    	timeToIdleSeconds: 设置元素距上一次被访问最长的空闲时间。只有当eternal设置为false是才有效。如果设置0,表示永远不过期。默认值为0.
    	timeToLiveSeconds: 设置元素的最长生存时间。只有当eternal设置为false是才有效。 如果设置0,表示永远不过期。默认值为0.
    	diskSpoolBufferSizeMB: 设置磁盘缓冲区大小。默认值为30M。每一个磁盘缓冲区针对与各自的cache。 
    	maxEntriesLocalDisk: 设置堆内存中的最大存储对象。默认值为0.表示没有限制。
    	diskExpiryThreadIntervalSeconds: 磁盘失效线程运行间隔。默认值为120秒。
    	memoryStoreEvictionPolicy: 内存收获策略。默认为LRU. 其他可选为FIFO,LFU
    	sub tab persistence strategy:可选值 
    									localRestartable:将所有缓存对象拷贝到磁盘。重新启动后数据可以重新装载。只适用于企业版本。
    									localTempSwap:将所有缓存对象拷贝到磁盘。重新启动后数据将丢失。
    									none:不做持久化保存。默认模式。
    									distributed:依照<terracotta>持久层配置。
     -->       
	<defaultCache 
		maxEntriesLocalHeap="1" 
		eternal="false"
		timeToIdleSeconds="120" 
		timeToLiveSeconds="120" 
		diskSpoolBufferSizeMB="30"
		maxEntriesLocalDisk="10000000" 
		diskExpiryThreadIntervalSeconds="120"
		memoryStoreEvictionPolicy="LRU">
		<persistence strategy="localTempSwap" />
	</defaultCache>
             
</ehcache>

 测试类Main.java

package com;
import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;
public class Main {
	public static void main(String[] args) throws InterruptedException {
		Cache cache = CacheControllor.addCache("test");
		
		// 如果cache中存储的element对象数超过maxEntriesLocalHeap指定的对象数,
		// 则如果配置类persistence策略不为none,则在指定的目录下会生成.data临时文件
		for(int i=0;i<100;i++){
			cache.put(new Element("key_"+i,"value_"+i));
		}
		System.out.println(cache.getSize());
		
		CacheControllor.removeCache("test");
	}

}

 

分享到:
评论
1 楼 lijiejava 2013-09-06  
very good 

相关推荐

    自己编写泛型通用 Ehcache入门

    **Ehcache 入门详解** Ehcache 是一个开源的、高性能的缓存解决方案,广泛应用于Java应用程序中,能够显著提升数据访问速度并降低数据库负载。本文将深入讲解如何自己编写泛型通用的Ehcache配置和使用,让你更好地...

    ehcache缓存入门项目

    在这个“ehcache缓存入门项目”中,我们将深入探讨EhCache的基本概念、配置、使用方法以及一些实用技巧。 1. **EhCache简介** EhCache是一个基于内存的分布式缓存解决方案,它可以存储对象并提供快速访问。它支持...

    Ehcache分布式缓存入门案例demo_文件转树结构_

    本入门案例将带你了解如何使用Ehcache实现分布式缓存,并特别关注如何将文件数据转换为树形结构。 首先,让我们理解Ehcache的基本概念。Ehcache的核心组件包括缓存管理器(Cache Manager)、缓存(Cache)和缓存项...

    Ehcache新手快速入门.docx

    Ehcache是一款广泛使用的Java缓存库,特别适合于提高CPU和I/O密集型应用程序的性能,同时增强应用的可扩展性。它由Adam Murdoch在为SourceForge项目创建页面时灵感突发命名,因其名字是回文而得名。Ehcache自版本...

    Mybatis入门实例(二)——添加ehcache缓存支持

    在本篇《Mybatis入门实例(二)——添加ehcache缓存支持》中,我们将深入探讨如何在Mybatis框架中集成Ehcache作为二级缓存,以提高数据访问的效率和性能。Ehcache是一个开源的Java分布式缓存,广泛用于缓存应用程序中...

    spring+ehcache

    本文将深入探讨如何将Ehcache与Spring进行整合,以提高应用程序的性能和效率,主要基于提供的"spring+ehcache"入门级别的demo。我们将通过JUnit进行测试,确保整合过程正确无误。 **一、Spring与Ehcache的整合** 1...

    ehcache-2.5.1-distribution.tar.gz最新下载

    Ehcache是一个开源的、高性能的Java缓存库,它为应用程序提供...- `README.txt`:快速入门指南和项目相关信息。 通过这些资源,开发者可以深入了解Ehcache的功能,快速在项目中集成和配置Ehcache,以提升系统的性能。

    springmvc+ehcache简单例子

    Spring MVC 和 Ehcache 是两个在Java Web开发中广泛使用...这个“springmvc+ehcache简单例子”提供了入门实践,帮助开发者快速理解和掌握这两个技术的集成。在实际项目中,还需要根据具体需求进行更深入的优化和调整。

    Ehcache官方文档.pdf

    #### 三、入门指南 - **通用缓存**:介绍如何在任何Java应用中快速启用Ehcache的基本步骤。 - **Hibernate集成**:指导开发人员如何将Ehcache与Hibernate结合使用,以提高查询性能。 - **J2EE Servlet缓存**:提供...

    Ehcache最新版本的UserGuide

    #### 四、入门指南 ##### 3.1 通用缓存 介绍了如何使用Ehcache进行通用缓存操作的基础知识。 ##### 3.2 Hibernate集成 讲解了如何将Ehcache与Hibernate框架集成以实现二级缓存。 ##### 3.3 Java EE Servlet缓存 ...

    maven整合ssh框架 + ehcache搭建、可直接运行导入运行

    这个压缩包包含了一个完整的、可以直接运行的SSH+Ehcache整合项目,为开发者提供了一个快速入门和学习的实例。通过研究这个项目,你可以深入了解这些技术的集成方式以及它们在实际项目中的应用。

    ehcache-2.5.2-distribution 1

    - `QUICK-START.html`:这个文件提供了Ehcache的快速入门教程,指导用户如何快速集成Ehcache到他们的Java应用中,包括添加依赖、配置缓存和使用缓存API。 5. **许可证信息**: - `licenses`目录:包含了Ehcache...

    axis webservic ehcache.zip

    标题中的“axis webservic ehcache.zip”是一个包含 Axis Web服务和Ehcache集成的入门示例的压缩文件。Axis是Apache软件基金会开发的一个开源Web服务框架,它用于创建和部署SOAP(简单对象访问协议)服务。Ehcache则...

    包含Redis,memcache,encache的NoSQL入门

    本教程将带你入门NoSQL的世界,特别是聚焦于Redis、Memcached和EnCache这三种流行的数据存储系统。 **Redis** 是一个开源的、基于键值对的数据存储系统,支持多种数据结构如字符串、哈希、列表、集合和有序集合。它...

    Ehcache User Guide

    ### 三、应用实践:从入门到精通 #### 3.1 通用缓存应用 无论是常规数据缓存、Hibernate框架整合还是Java EE Servlet缓存,Ehcache均能提供简便而强大的解决方案。JCACHE风格的缓存机制进一步拓展了其适用范围。 ...

    Java Ehcache缓存框架入门级使用实例

    在本文中,我们将探讨Ehcache的基本概念以及如何在项目中进行入门级的配置和使用。 1. **Ehcache的特点** - **内存优先**:Ehcache主要基于内存缓存,提供高速的数据存取。 - **磁盘辅助**:当内存中的缓存达到...

    ehcache3:Ehcache 3.x行

    Ehcache 3.x产品线目前是开发产品线。 生成状态: 有关更多信息,您可能需要查看 。 新API入门 有关示例,文档和使用信息,请访问 。 当前的版本 我们于2020年8月25日发布了3.9.0。 包含指向工件和文档的链接,以...

    JavaWeb开发之Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架

    本篇文章将详细讲解基于Spring、SpringMVC、MyBatis、SpringSecurity、EhCache和JCaptcha这六大组件构建的Web框架。 1. **Spring**: Spring作为整个框架的核心,提供了依赖注入(DI)和面向切面编程(AOP)等特性...

    JAVA缓存入门文档..Cache

    ### JAVA缓存入门文档:EHCache #### 一、EHCache简介 EHCache 是一个纯 Java 缓存实现,主要用于提高应用程序性能。它通过在内存中缓存数据来减少对数据库或其他外部系统的调用次数,从而加快应用响应速度。...

    spring shiro整合入门

    - **Caching**:为了提高性能,可以集成缓存机制,如 EhCache 或 Redis,存储用户权限信息。 - **Session 共享**:在分布式系统中,需要处理跨服务器的会话共享问题,Shiro 提供了基于 Redis 的 Session Manager ...

Global site tag (gtag.js) - Google Analytics