搜档网
当前位置:搜档网 › Spring下Ehcache缓存的配置文档说明

Spring下Ehcache缓存的配置文档说明

Spring下Ehcache缓存的配置文档说明
Spring下Ehcache缓存的配置文档说明

Ehcache缓存单机环境配置

以下的配置是针对DAO层而言的,Controller层不需要做配置。

步骤一:配置pom.xml文件

在文件中引入以下几个依赖项:

com.googlecode.ehcache

spring-annotations-osgi

1.1.2

commons-codec

commons-codec

1.4

net.sourceforge.ehcache

https://www.sodocs.net/doc/0113659801.html,.sf.ehcache

2.2.0

步骤二:配置template.mf

在”Import-Package”之后”Excluded-Exports”之前引入三条配置项,注意包名之前要留一个空格,如下红色字体显示部分:

Import-Package: org.springframework.context.config;version="[3.0.5,4)",

com.googlecode.ehcache.annotations;version="1.1.0",

com.googlecode.ehcache.annotations.key;version="1.1.0",

org.springframework.aop.aspectj.autoproxy

Excluded-Exports: com.mpr.mprsp.mcrc.service.mcrs.publisher.internal.*

步骤三:配置Spring的配置文件applicationContext.xml:

首先在文件的头部加上ehcache的dtd声明,然后配置ehcache缓存管理器。具体配置如下红色字体所示:

xmlns:ehcache="https://www.sodocs.net/doc/0113659801.html,/svn/schema/ehcache-sprin g"

xsi:schemaLocation="https://www.sodocs.net/doc/0113659801.html,/schema/beans

https://www.sodocs.net/doc/0113659801.html,/schema/beans/spring-beans-3.0.xsd

https://www.sodocs.net/doc/0113659801.html,/svn/schema/ehcache-spring

https://www.sodocs.net/doc/0113659801.html,/svn/schema/ehcache-spring/ehcache-spring -1.1.xsd">

特殊说明:

1.ehcache缓存管理器的配置位置紧接在context:component-scan节点之后。

2.配置缓存失效时间是当代码中没有配置移除缓存的触发条件时,让缓存内容自动过期。

步骤四:添加本地缓存的配置文件ehcache.xml:

该文件可以放置在:/META-INF/ehcache/ehcache.xml,可参考applicationContext.xml的目录位置:/META-INF/spring/applicationContext.xml。ehcache.xml文件内容如下所示:

xsi:noNamespaceSchemaLocation="https://www.sodocs.net/doc/0113659801.html,/ehcache.xsd"

updateCheck="false">

overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"

timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" />

overflowToDisk="true" diskPersistent="false" timeToIdleSeconds="0"

timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" />

特殊说明:

1.该配置文件不能有中文注释,否则Linux环境下应用会在启动时报错。

2.可以定义多个cache节点,名称不一样即可。

步骤五:在DAO的实现类上使用ehcache缓存

使用示例如以下红色字体标注:

@Cacheable(cacheName = "friendshipsCache")

public List query(FriendShipInfoParams params) throws Exception{}

@Cacheable(cacheName = "friendshipsTotalCache")

public int query(FriendShipInfoParams params) throws Exception{}

@TriggersRemove(cacheName = {"friendshipsCache","friendshipsTotalCache"}, when = When.AFTER_METHOD_INVOCATION, removeAll = true)

public int add(FriendShipInfo info) throws Exception{}

特殊说明:

1.cacheName即是在ehcache.xml文件中配置的缓存名称;

2.一般来说,在查询或者统计时才需要缓存结果集,而在新增、编辑及删除的时候需要移

除缓存,这样才能保证在数据有变动时,再调用查询方法所取得的结果是正确的;

3.如果查询参数是对象类型的,如FriendShipInfoParams params,则需要

FriendShipInfoParams类实现Serializable接口并生成一个唯一的serialVersionUID,同时还重写hashCode方法与equals方法。方法中的字段视查询条件而定,原则上来讲只要能确保对象的唯一性即可。

Ehcache缓存集群环境配置

配置Echcache集群只需将上述步骤四的配置稍作修改即可。

集群环境为两台机器,IP分别以下:

主机A ip:172.16.20.65

主机B ip:172.16.20.25

修改ehcache.xml文件内容如下所示:

xsi:noNamespaceSchemaLocation="https://www.sodocs.net/doc/0113659801.html,/ehcache.xsd"

updateCheck="false">

class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=manual,rmiUrls=//172.16.20.25:40000/noticeCache|//172 .16.20.25:40000/noticesCache"/>

class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"

properties="hostName=172.16.20.65,port=40000,socketTimeoutMillis=120000" />

overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"

timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU">

class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />

overflowToDisk="true" diskPersistent="false" timeToIdleSeconds="0"

timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" />

class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />

overflowToDisk="true" diskPersistent="false" timeToIdleSeconds="0"

timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" />

class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />

说明:

1)配置cacheManagerPeerProviderFactory是指定除自身之外的网络群体中其他提供同步的主机列表,用“|”分开不同的主机;在上述配置中,其他集群网络的IP为:172.16.10.25。2)配置cacheManagerPeerListenerFactory是配置宿主主机配置监听程序,来发现其他主机发来的同步请求。在上述配置中,宿主主机IP为:172.16.10.65。

3)确保所监听的端口已被服务器打开并且没有被占用。上述配置中,监听的端口为:40000。

Ehcache 2 缓存区配置详解

Ehcache 2 缓存区配置详解 第1章Ehcache简介 EhCache是一个开放源码的,基于标准的高速缓存系统。Ehcache可以显著提高应用性能,降低数据库负载,简化应用扩展。Ehcache健壮、功能齐全,也历经了众多应用考验,使得它成为使用最广泛的基于Java的缓存系统。 Ehcache可以支持从进程内的一个或多个节点的部署方式到进程内与进程外混合、高达TB 大小的高速缓存。 Ehcache目前由Terracotta公司维护,使用Apache 2 许可证。 Ehcache截止目前最新版本为2.6。支持多种方式缓存: ●Standalone模式。嵌入应用进程内。单点,多节点间无沟通。 ●Replication模式。嵌入应用内部,通过RMI或JGroup或JMS进行节点同步。 ●Cache Server模式。作为独立缓存服务器,提供REST与WebService接口供访 问。 ●Distributed Caching模式。采用Terracotta Server Array实现高可用的分布式 缓存。 Standalone与Replication均是较传统的使用方式,很多场景下难以满足动态基础设施环境下应用弹性的要求。Cache Server使得缓存服务可以容易的进行水平扩展,但是基于REST与WebService的访问方式降低了缓存访问的效率,不太适合对缓存实时性要求较高的场景。Distributed Caching模式提供了进程内与进程间缓存较理想的结合模式,支持水平扩展,高可用,对网络依赖程度较低,可以很好适应应用弹性伸缩,是动态基础设施条件下较理想的缓存模式。 第2章Ehcache 2 缓存区配置 Ehcache默认配置文件在Ehcache客户端的classpath根目录下,名为ehcache.xml。典型的配置文件如下:

spring配置文件各个属性详解

spring配置文件各个属性详解 分类:spring 2012-08-09 11:25 9316人阅读评论(2) 收藏举报springaophibernateattributesxhtmlwebsphere 目录(?)[+]一、引用外部属性文件 classpath:mail.properties classpath:jdbc.properties 我们定义了一个PropertyPlaceholderConfigurer类的实例,并将其位置属性设置为我们的属性文件。该类被实现为Bean工厂的后处理器,并将使用定义在文件中的属性来代替所有的占位符(${...}value)。 注意: 而在spring2.5的版本中提供了一种更简便的方式,如: 1. 这样以后要使用属性文件中的资源时,可以使用${属性名}来获得。 二、常用数据源的配置 第一种是:DBCP数据源,(需要加入2个jar文件,在spring中的lib下 jakarta-commons/commons-dbcp.jar和commons-pools.jar)主要配置如下:

Spring下Ehcache缓存的配置文档说明

Ehcache缓存单机环境配置 以下的配置是针对DAO层而言的,Controller层不需要做配置。 步骤一:配置pom.xml文件 在文件中引入以下几个依赖项: com.googlecode.ehcache spring-annotations-osgi 1.1.2 commons-codec commons-codec 1.4 net.sourceforge.ehcache https://www.sodocs.net/doc/0113659801.html,.sf.ehcache 2.2.0 步骤二:配置template.mf 在”Import-Package”之后”Excluded-Exports”之前引入三条配置项,注意包名之前要留一个空格,如下红色字体显示部分: Import-Package: org.springframework.context.config;version="[3.0.5,4)", com.googlecode.ehcache.annotations;version="1.1.0", com.googlecode.ehcache.annotations.key;version="1.1.0", org.springframework.aop.aspectj.autoproxy Excluded-Exports: com.mpr.mprsp.mcrc.service.mcrs.publisher.internal.* 步骤三:配置Spring的配置文件applicationContext.xml: 首先在文件的头部加上ehcache的dtd声明,然后配置ehcache缓存管理器。具体配置如下红色字体所示:

ehcache原理

转ehcache 基本原理 hjp222发表于2011-03-22 16:30 最后修改于2011-05-16 15:32 浏览(105) 评论(0)分类:ehcache 举报 ehcache是一个用Java实现的使用简单,高速,实现线程安全的缓存管理类库,ehcache 提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案。同时ehcache作为开放源代码项目,采用限制比较宽松的Apache License V2.0作为授权方式,被广泛地用于Hibernate, Spring,Cocoon等其他开源系统。 Ehcache的类层次模型主要为三层,最上层的是CacheManager,他是操作Ehcache的入口。我们可以通过CacheManager.getInstance()获得一个单个的CacheManager,或者通过CacheManager的构造函数创建一个新的CacheManager。每个CacheManager都管理着多个Cache。而每个Cache都以一种类Hash的方式,关联着多个Elemenat。而Element则是我们用于存放要缓存内容的地方。 ehcache的刷新策略 ehcache的刷新策略是当缓存在放入的时候记录一个放入时间,它是用Lazy Evict的方式,在取的时候同设置的TTL比较 ehcache缓存的3种清空策略: 1 FIFO,先进先出 2 LFU,最少被使用,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。 3 LRU,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。事件处理 可以为CacheManager添加事件监听,当对CacheManager增删Cache时,事件处理器将会得到通知。要配置事件处理,需要通过ehcache的配置文件来完成。 可以为Cache添加事件监听,当对Cache增删Element时,事件处理器将会得到通知。要配置事件处理,需要通过ehcache的配置文件来完成。 ehcache参数配置: maxInMemory - 设定内存中创建对象的最大值。 eternal - 设置元素(译注:内存中对象)是否永久驻留。如果是,将忽略超时限制且元素永不消亡。 timeToIdleSeconds - 设置某个元素消亡前的停顿时间。也就是在一个元素消亡之前,两次访问时间的最大时间间隔值。这只能在元素不是永久驻留时有效(译注:如果对象永恒不灭,则设置该属性也无用)。 如果该值是0 就意味着元素可以停顿无穷长的时间。 timeToLiveSeconds - 为元素设置消亡前的生存时间。也就是一个元素从构建到消亡的最大时间间隔值。这只能在元素不是永久驻留时有效。 overflowToDisk - 设置当内存中缓存达到maxInMemory 限制时元素是否可写到磁盘上。

SpringBoot下mybatis-一级、二级缓存测试及总结

一、默认开启一级缓存。一级缓存是 SqlSession 级别的。 具体什么意思测试一下。 一次事务中,同一语句调用两次,代码: VarDateEntity varDateEntity = dateMapper.getVarDate(); System.out.println("var1 var:"+varDateEntity.getVarTime()); System.out.println("var1 not:"+varDateEntity.getNotTime()); System.out.println("var1 null:"+varDateEntity.getNullTime()); varDateEntity = dateMapper.getVarDate(); System.out.println("var2 var:"+varDateEntity.getVarTime()); System.out.println("var2 not:"+varDateEntity.getNotTime()); System.out.println("var2 null:"+varDateEntity.getNullTime()); Postman 中执行两次: 测试结果: 结论1: 同一事务中的两次查询,只查询了一次。但是两次事务中,每次均进行了一次查询; 一级缓存的 scope 默认值session; 设置为:statment 。重启 springboot 应用再次测试: 结论2: 设置mybatis.configuration.local-cache-scope=statement后,即使 xmxxxxl 语句中配置useCache="true",一级缓存均失效。 总结: ?Mybatis一级缓存的生命周期和SqlSession一致。 ?Mybatis的缓存是一个粗粒度的缓存,没有更新缓存和缓存过期的概念,同时只是使用了默认的hashmap,也没有做容量上的限定。 ?Mybatis的一级缓存最大范围是SqlSession内部,有多个SqlSession或者分布式的环境下,有操作数据库写的话,会引起脏数据,建议是把一级缓存的默认级别设定为 Statement,即不使用一级缓存。 二、开启二级缓存,需要进行设置。 #一级缓存状态:关闭 # mybatis.configuration.local-cache-scope=statement #二级缓存状态:开启 # mybatis.configuration.cache-enabled=true

mybatis-ehcache-1.0.0-reference

MyBatis EHCache integration-Reference Documentation The MyBatis Community(https://www.sodocs.net/doc/0113659801.html,) Copyright?2010 Copies of this document may be made for your own use and for distribution to others,provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice,whether distributed in print or electronically.

1.The MyBatis EHCache integration (1) 1.1.How to (1)

Chapter1.The MyBatis EHCache integration 1.1.How to EHCache is a widely used java distributed cache for general purpose caching,Java EE and light-weight containers. The EHCache integration is built on top of the ehcache-core and comes without any EHCache3rd part applications.Please refeer to official EHCache documentation if you need plugins. Users that want to use EHCache into their applications,have to download the1.0.0zip bundle,decompress it and add the jars in the classpath;Apache Maven users instead can simply add in the pom.xml the following dependency: then,just configure it in the mapper XML If users need to log cache operations,they can plug the Cache logging version: Users that need to configure EHCache through XML configuration file,have to put in the classpath the /ehcache.xml resource;please refeer to the official EHCache documentation to know more details. If the/ehcache.xml resource is not found or something goes wrong while loading it,the default configuration will be used.

JAVA技术架构及开发规范文档

JAVA技术架构及开发规范文档 1引言 1.1目的 通过对系统整体架构和技术规范的描述.为下一步大规模设计开发提供基础和规范。也希望广大JAVA项目开发的程序猿们提出宝贵的建议.不断完善。 1.2对象与范围 架构师.高级工程师.项目经理.项目管理人员,开发人员.测试人员。 1.3概述 系统实现方案,以实现功能为主.效率性能为辅. 但设计兼顾未来性能的扩展,以减少未来重构的工作量。 wcbapp按逻辑分为两层.第一层用户服务接入. 第二层内部服务。第一层项目不分模块,以二级目录形式表示不同模块,第二层根据不同服务分模块,第 一层和第二层之间使用hessian通信。 第一层和第二层独立部署.第二层的不同模块也可以独立部署。 下项目考虑第一层分模块的二级域名独立部署. 并实现单点登荥。 web app采用集群负载均衡,数据库采用负载均衡和读写分离.以满足一定的性能需求。 文档描述了各层结构和模块使用的技术和框架。最后描述了开发的规范和用到的开发工具。 文档只是描述了项目的架构. 2系统架构图 系统架构如下

3层次和模块 3.1前端负载均衡 Nginx是一个口碑很好的开源免费WEB服务器,国内很多大型网站都转选Nginx平台.比如將讯,豆瓣等。Nginx可以实现动靜分离和web app的负载均衡。 3.1.1动静分离 动靜分离可以很好得分担服务器的负载,有两种方式实现动靜分离。 1. 使用2级域名,配置专门的靜态文件服务器。 2. 利用Nginx的url转发功能,把静态请求转发到靜态服务器或在Nginx本地込理.动态请求转发到应用服务器。 我们目前部署上采用第二种方式.同时也实现第一种方式。系统可以配置动态服务器地址和静态服务器地址,在生成页面时获取这两个地址.对图片、js脚本、css和靜态页面使用静态配置生成url,对ajax清求和动态页面使用动态服务器地址生成urlo 3.1.2负载均衡 Nginx可以配置upstream服务器组,实现组内的负载均衡。通过ip_hash的方式把动态请求转发到组内的某台服务器.同时保证客户端在IP不变的情况下—直访问同一台服务器.解决session保持问题。 3.2 Web app 网站前端,基Tj2ce. spring框架开发。 3.2.1页面展示和控制 系统有三种页面方式。 动态同步请求.通过velocity模板生成页面.客户端刷新整个页面。 ajax异步请求。Ajax舁步请求又有三种形式:与velocity模板结合返回html串:返回json格式;直接返回简单的字符串。 3模板生成的纯静态页面 前台页面采用的框架和第三方技术有:

8种缓存框架介绍

8种流行的java缓存框架介绍 OSCache OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。 Java Caching system JSC(Java Caching system)是一个用分布式的缓存系统,是基于服务器的java应用程序。它是通过提供管理各种动态缓存数据来加速动态web应用。JCS和其他缓存系统一样,也是一个用于高速读取,低速写入的应用程序。动态内容和报表系统能够获得更好的性能。如果一个网站,有重复的网站结构,使用间歇性更新方式的数据库(而不是连续不断的更新数据库),被重复搜索出相同结果的,就能够通过执行缓存方式改进其性能和伸缩性。 EHCache EHCache 是一个纯java的在进程中的缓存,它具有以下特性:快速,简单,为Hibernate2.1充当可插入的缓存,最小的依赖性,全面的文档和测试。 JCache JCache是个开源程序,正在努力成为JSR-107开源规范,JSR-107规范已经很多年没改变了。这个版本仍然是构建在最初的功能定义上。 ShiftOne ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Java lib,就像一个轻量级的配置缓存工作状态的框架。 SwarmCache SwarmCache是一个简单且有效的分布式缓存,它使用IP multicast与同一个局域网的其他主机进行通讯,是特别为集群和数据驱动web应用程序而设计的。SwarmCache能够让典型的读操作大大超过写操作的这类应用提供更好的性能支持。SwarmCache使用JavaGroups 来管理从属关系和分布式缓存的通讯。 TreeCache / JBossCache

相关主题