Ehcache 2 缓存区配置详解

合集下载

ehcache缓存配置说明

ehcache缓存配置说明

ehcache缓存配置说明前阵子用ehcache做缓存集群,现在结束了,所以整理了下配置文件的注释,有些是自己翻译的,仅供参考<cacheManagerPeerProviderFactoryclass="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory" properties="connect=TCP(start_port=7800):TCPPING(initial_hosts=127.0.0.1[7800];port_range=10;timeout=3000;num_initial_members=3;u p_thread=true;down_thread=true):VERIFY_SUSPECT(timeout=1500;down_thread=false;up_thread=false):pbcast.NAKACK(down_thread=true;up_thread=true;gc_lag=100;retransmit_timeout=3000):pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;print_local_addr=false;dow n_thread=true;up_thread=true)"propertySeparator="::"/>cacheManagerPeerProviderFactory ehcache缓存监视器.connect=TCP 监视模式:TCP模式(还有UDP模式).start_port 指定监听起始端口.TCPPING 监听端口寻找广播方式(还有一种:TCPGOSSIP)寻找端口进行监听,从start_port开始递增port_range寻找可用的端口.initial_hosts 指定ehcache的所在主机IP(如果有多台主机的话initial_hosts=192.168.1.1[7800],192.168.1.2[7800]).port_range 递增值.timeout 没找到说明,猜测是寻找下一个有效端口前的停留时间.num_initial_members 初始成员,执行缓存同步的项目数up_thread,down_thread每个通信协议都会产生两个线程(up_thread,down_thread),用来控制队列的挂起和运行,可以通过设置up_thread=false;down_thread=false来使这两个线程失效VERIFY_SUSPECT 校验模块(问题出现时检验是服务死掉了,还是通信接口失效了)gc_lag 垃圾回收间隔retransmit_timeout 重新广播前等待的时间pbcast.NAKACK 确保消息正常广播,如果广播失败,接收者将重新请求,同时保证消息的先进先出原则pbcast.GMS 调度器,实时的广播,告知成员的变动情况,新增或者去除.join_timeout 加入时间限时join_retry_timeout 重试加入限时shun 自动尝试加入(新版本已被去除,不赞成使用)print_local_addr 打印出当前广播的地址==============================================================================<cacheEventListenerFactoryclass="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"properties="replicateAsynchronously=true, replicatePuts=true,replicateUpdates=true, replicateUpdatesViaCopy=false,replicateRemovals=true" />cacheEventListenerFactory 注册相应的的缓存监听类,用于处理缓存事件. replicateAsynchronously true|false 复制操作是异步(ture),还是同步(false)默认值为true. replicatePuts true|false 当新对象被放入缓存,集群内其他缓存也放入,默认为true. replicateUpdates true|false 新对象覆盖已经存在具有相同key的对象是否被复制,默认值为true.replicateUpdatesViaCopy true|false 直接将更新之后的对象复制到集群中的其他缓存(true);不复制对象,只想集群众的其他缓存发布一个对象更新的消息(false),默认为true.replicateRemovals true|false 对象被移除,是否复制状态到集群中其他缓存,默认true.==============================================================================<defaultCache maxElementsInMemory="500000" eternal="false"timeToIdleSeconds="1800" timeToLiveSeconds="1800"overflowToDisk="true" diskPersistent="true"><cacheEventListenerFactoryclass="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"properties="replicateAsynchronously=true, replicatePuts=true,replicateUpdates=true, replicateUpdatesViaCopy=false,replicateRemovals=true" /></defaultCache><defaultCache maxElementsInMemory="10000" eternal="false"timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000"diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU"><cacheEventListenerFactoryclass="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"properties="replicateAsynchronously=true, replicatePuts=true,replicateUpdates=true, replicateUpdatesViaCopy=false,replicateRemovals=true" /></defaultCache>defaultCache 默认缓存,有些没有被配置的缓存对象将使用默认缓存maxElementsInMemory 内存中最大缓存对象数.当超过最大对象数的时候,ehcache会按指定的策略去清理内存eternal 缓存对象是否永久有效,一但设置了,timeout将不起作用.timeToIdleSeconds 设置Element在失效前的允许闲置时间.仅当element不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大.timeToLiveSeconds timeToLiveSeconds:设置Element在失效前允许存活时间.最大时间介于创建时间和失效时间之间.仅当element不是永久有效时使用,默认是0.,也就是element存活时间无穷大.overflowToDisk 配置此属性,当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中.diskSpoolBufferSizeMB 这个参数设置DiskStore(磁盘缓存)的缓存区大小.默认是30MB.每个Cache都应该有自己的一个缓冲区.maxElementsOnDisk 磁盘中最大缓存对象数,若是0表示无穷大.diskPersistent 是否在重启服务的时候清楚磁盘上的缓存数据.true不清除. diskExpiryThreadIntervalSeconds 磁盘失效线程运行时间间隔. memoryStoreEvictionPolicy memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存.默认策略是LRU(最近最少使用).你可以设置为FIFO(先进先出)或是LFU(较少使用).注:普通cache同defaultCache的属性一样,可以根据自己的实际需求去配置。

ehcache2.x分布式缓存原理

ehcache2.x分布式缓存原理

ehcache2.x分布式缓存原理Ehcache是一个流行的Java分布式缓存解决方案,其中2版本是其中一个常用的版本。

以下是Ehcache 2.x分布式缓存的简要原理说明:Ehcache 2.x分布式缓存采用了主从架构,其中一个节点作为主节点,其他节点作为从节点。

主节点负责缓存的读写和管理,而从节点负责缓存的存储和获取。

1. 初始化配置:通过Ehcache的配置文件,配置各个节点的角色、IP和端口等信息。

所有节点都需要加载相同的配置文件,以保持一致。

2. 数据传输:当主节点接收到一个写请求时,它首先将数据写入自己的缓存,然后将数据传输到所有的从节点。

传输过程可以通过多种方式实现,如使用网络传输或复制缓存文件。

3. 数据一致性:主节点在数据传输完成后,会等待所有从节点确认接收完成,确保数据的一致性。

一旦所有的从节点都已确认,主节点才会响应写请求成功。

4. 缓存访问:在读取缓存时,从节点会先查询自己的本地缓存。

如果找不到需要的数据,从节点会向主节点发起请求,获取数据并复制到自己的本地缓存。

5. 缓存失效:当缓存中的数据过期或被移除时,主节点会通知所有的从节点进行相应的缓存更新或清除操作。

通过上述的分布式缓存原理,Ehcache 2.x可以实现多个节点之间的缓存共享和数据一致性。

主节点负责协调和管理缓存的写操作,而从节点则负责缓存的存储和读取。

这种架构可以提升分布式系统的性能和可靠性,减轻了单个节点的负载压力,并保证了缓存数据的一致性。

需要注意的是,Ehcache 2.x是一个比较旧的版本,现在已经有了更高版本及其他更现代的分布式缓存解决方案。

在选择使用任何缓存解决方案之前,请根据实际需求和最新的技术趋势进行评估和选择。

ehcache缓存的详细配置

ehcache缓存的详细配置

用到缓存,主要是用来解决并发问题的。

其中ehcache是一个纯Java的过程中缓存实现Hibernate2.1,Spring都支持EHcache嵌入。

本文主要写Spring中引入ehcache而不是用hibernate.ehcache部署起来很简单,主要分两步:1.首先要给他写个核心配置XML文件Xml代码<ehcache><diskStore path="java.io.tmpdir"/><defaultCachemaxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"overflowToDisk="true"diskPersistent="false"diskExpiryThreadIntervalSeconds ="120"memoryStoreEvictionPolicy="LRU"/><cache name="cache1"maxElementsInMemory="10000"eternal="false" maxEle mentsOnDisk="1000"overflowToDisk="true"timeToIdleSeconds="300"timeToLiveSeconds="600"memoryStoreEvictionPolicy="LFU"/></ehcache>属性解释:简单配置,在ehcache.xml文件中有此配置,在使用Ehcache前最好将其删除掉,自己配置。

二级缓存

二级缓存

二级缓存1.二级缓存相关介绍①缓存好处:将数据库或者硬盘数据,保存在内存中,减少数据库查询次数,减少硬盘交互,提高检索效率hibernate 共有两个级别的缓存* 一级缓存,保存Session中,事务范围的缓存* 二级缓存,保存SessionFactory ,进程范围的缓存SessionFacoty 两部分缓存内置:Hibernate 自带的, 不可卸载. 通常在Hibernate 的初始化阶段, Hibernate 会把映射元数据和预定义的SQL 语句放到SessionFactory 的缓存中, 映射元数据是映射文件中数据的复制, 而预定义SQL 语句时Hibernate 根据映射元数据推到出来的. 该内置缓存是只读的.外置:一个可配置的缓存插件. 在默认情况下, SessionFactory 不会启用这个缓存插件. 外置缓存中的数据是数据库数据的复制, 外置缓存的物理介质可以是内存或硬盘,必须引入第三方缓存插件才能使用。

2.二级缓存内部结构学习* 类缓存区域* 集合缓存区域* 更新时间戳区域* 查询缓存区域3.二级缓存并发策略transactional :提供Repeatable Read事务隔离级别,缓存支持事务,发生异常的时候,缓存也能够回滚read-write :提供Read Committed事务隔离级别,更新缓存的时候会锁定缓存中的数据nonstrict-read-write :导致脏读,很少使用read-only :数据不允许修改,只能查询* 很少被修改,不是很重要,允许偶尔的并发问题,适合放入二级缓存。

考虑因素(二级缓存的监控【后面学习】,它是是否采用二级缓存主要参考指标)4.hibernate 支持二级缓存技术* EHCache (主要学习,支持本地缓存,支持分布式缓存)可作为进程范围内的缓存, 存放数据的物理介质可以是内存或硬盘, 对Hibernate 的查询缓存提供了支持。

ehcache 缓存参数 -回复

ehcache 缓存参数 -回复

ehcache 缓存参数-回复关于ehcache缓存参数的文章引言:在现代软件开发中,为了提高系统的性能和响应速度,应用程序经常会使用缓存来存储经常访问的数据。

ehcache是一个Java缓存库,它提供了丰富而强大的缓存功能。

本文将深入探讨ehcache缓存参数的相关知识,帮助读者了解如何优化和配置ehcache缓存以提高系统的性能。

第一部分:什么是ehcache缓存1.1 缓存的定义和作用缓存是一种将数据存储在临时存储器中的技术,以便可以快速地检索和更新数据。

它可以在磁盘或内存中存储数据,并可以根据需求设置缓存失效策略。

1.2 ehcache简介ehcache是一个广泛使用的Java缓存库,它提供了高性能、可扩展和可靠的缓存功能。

它可以与各种Java框架集成,如Spring、Hibernate等。

第二部分:ehcache缓存参数的配置2.1 缓存的初始化和配置要使用ehcache缓存,首先需要在应用程序中添加ehcache的依赖,并在项目的配置文件中进行相应的配置。

2.2 重要的ehcache缓存参数ehcache提供了一些重要的缓存参数,可以通过配置文件进行设置。

下面是其中一些常用参数的说明:- timeToIdleSeconds:设置对象在缓存中的空闲时间。

如果对象在指定的时间间隔内没有被访问,那么它将被从缓存中移除。

- timeToLiveSeconds:设置对象在缓存中的存活时间。

如果对象存活时间超过指定的时间间隔,那么它将被从缓存中移除。

- maxEntriesLocalHeap:在堆内存中存储的最大缓存对象数。

- maxEntriesLocalDisk:在磁盘中存储的最大缓存对象数。

- diskExpiryThreadIntervalSeconds:设置缓存失效检查线程的执行间隔时间。

2.3 缓存参数配置的注意事项在配置ehcache缓存参数时,需要注意以下几点:- 根据应用程序的需求合理设置缓存的空闲和存活时间,以免存储过期或无用的数据。

jpa二级缓存设置专业资料

jpa二级缓存设置专业资料

共 12 页
第 2 页
sheagle@
ehcache 缓存设置
缓存的软件实现 在 Hibernate 的 Session 的实现中包含了缓存的实现 由第三方提供, Hibernate 仅提供了缓存适配器(CacheProvider)。 用于把特定的缓存插件集成到 Hibernate 中。 启用缓存的方式 只要应用程序通过 Session 接口来执行保存、更新、删除、加载和查 询数据库数据的操作,Hibernate 就会启用第一级缓存,把数据库中的数据以对象的形式拷 贝到缓存中,对于批量更新和批量删除操作,如果不希望启用第一级缓存,可以绕过 Hibernate API,直接通过 JDBC API 来执行指操作。 用户可以在单个类或类的单个集合的 粒度上配置第二级缓存。 如果类的实例被经常读但很少被修改, 就可以考虑使用第二级缓存。 只有为某个类或集合配置了第二级 缓存,Hibernate 在运行时才会把它的实例加入到第二 级缓存中。 用户管理缓存的方式 第一级缓存的物理介质为内存,由于内存容量有限,必须通过恰 当的检索策略和检索方式来限制加载对象的数目。 Session 的 evit()方法可以显式清空缓存 中特定对象,但这种方法不值得推荐。 第二级缓存的物理介质可以是内存和硬盘,因此第 二级缓存可以存放大量的数据, 数据过期策略的 maxElementsInMemory 属性值可以控制内存 中 的对象数目。管理第二级缓存主要包括两个方面:选择需要使用第二级缓存的持久类, 设置合适的并发访问策略:选择缓存适配器,设置合适的数据过期策略。
2.3.5 配置二级缓存的主要步骤: 1) 选择需要使用二级缓存的持久化类,设置它的命名缓存的并发访问策略。这是最值 得认真考虑的步骤。 2) 选择合适的缓存插件,然后编辑该插件的配置文件。

ehcache缓存配置

ehcache缓存配置

ehcache缓存配置# 在pom.xml中引⼊依赖<dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId><version>2.10.6</version></dependency># 在src/main/resources/创建⼀个配置⽂件 ehcache.xml默认情况下Ehcache会⾃动加载classpath根⽬录下名为ehcache.xml⽂件,也可以将该⽂件放到其他地⽅在使⽤时指定⽂件的位置。

<?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi="/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="/ehcache.xsd"><!-- 磁盘缓存位置 --><diskStore path="java.io.tmpdir/ehcache"/><!-- 默认缓存 --><defaultCachemaxEntriesLocalHeap="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"maxEntriesLocalDisk="10000000"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"><persistence strategy="localTempSwap"/></defaultCache><!-- helloworld缓存 --><cache name="HelloWorldCache"maxElementsInMemory="1000"eternal="false"timeToIdleSeconds="5"timeToLiveSeconds="5"overflowToDisk="false"memoryStoreEvictionPolicy="LRU"/></ehcache># 测试类public class CacheTest {public static void main(String[] args) throws IOException {// 1. 创建缓存管理器。

Hibernate配置EhCache缓存之annotation注解

Hibernate配置EhCache缓存之annotation注解

Hibernate配置EhCache缓存之annotation注解ms注解是种流行,越来越多的注解,越来越多的零配置1. 首先设置EhCache,建立配置文件ehcache.xml,默认的位置在class-path,可以放到你的src目录下:2. 在Hibernate配置文件中设置:此外,可以把e_second_level_cache设置为false关闭所有的hibernate二级缓存。

但此属性对指定<cache>的类缺省为true。

3. 为了使用二级缓存,需要在每一个Hibernate Entity上配置。

(1) usage: 提供缓存对象的事务隔离机制,可选值有以下几种(NONE, READ_ONLY, NONSTRICT_READ_WRITE, READ_WRITE, TRANSACTIONAL)ehcache不支持transactional,其他三种可以支持。

read-only:无需修改,那么就可以对其进行只读缓存,注意,在此策略下,如果直接修改数据库,即使能够看到前台显示效果,但是将对象修改至cache中会报error,cache不会发生作用。

另:删除记录会报错,因为不能在read-only模式的对象从cache中删除。

read-write:需要更新数据,那么使用读/写缓存比较合适,前提:数据库不可以为serializable transaction isolation level (序列化事务隔离级别)nonstrict-read-write:只偶尔需要更新数据(也就是说,两个事务同时更新同一记录的情况很不常见),也不需要十分严格的事务隔离,那么比较适合使用非严格读/写缓存策略。

(2) region (optional): 指定缓存的区域,默认是类的全限定名。

利用缓存区域,可以更精确的指定每个区域的缓存超前策略。

如果指定了缓存区域前缀(在hibernate.cfg.xml中设置cache.region_prefix属性为一个字符串),则所有的缓存区域名前将加上这个前缀。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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。

典型的配置文件如下:<?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi="/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="ehcache.xsd"updateCheck="false" monitoring="autodetect"dynamicConfig="true" name="example"><defaultCachemaxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"overflowToDisk="true"diskSpoolBufferSizeMB="30"maxElementsOnDisk="10000000"diskPersistent="false"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"/><cache name="colors"maxElementsInMemory="100"maxElementsOnDisk="0"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="0"memoryStoreEvictionPolicy="LFU"><terracotta/></cache><terracottaConfig url="localhost:9510"/></ehcache>缓存区使用<cache/>标签进行配置,主要属性以及意义如下:⏹name(必填属性):缓存区名称,用以区别缓存区,必须唯一。

⏹maxEntriesLocalHeap(必填属性):设置缓存在本地内存中最大缓存项数量(0表示无限)。

(等效于旧版本中的maxElementsInMemory属性)。

在实际使用中,在非分布式部署条件下,无限等效于Integer.MAX_SIZE (2147483647)。

在分布式部署条件下,缓存项数量由Terracotta Server Array资源上限决定。

⏹maxEntriesLocalDisk(必填属性):设置保存在本地磁盘中的的最大缓存项数量。

默认为0,表示数量不限。

⏹eternal(必填属性):设置缓存项是否为永久的。

如果设置为true,缓存项的过期设置将被忽略,缓存项永不过期。

⏹overflowToOffHeap:此属性仅在使用Ehcache企业版时有效。

设置为true,缓存将使用非堆内存,非堆内存并非由Java管理,与Java垃圾回收无关。

默认为false。

⏹maxBytesLocalHeap:定义保存在Java虚拟机堆内存中的缓存项的最大字节数。

定义时格式如下<number>k|K|m|M|g|G,其中k|K代表千字节,m|M代表兆字节,g|G代表吉字节。

举例:maxBytesLocalHeap="2g"将使用2G堆内存。

此属性与maxEntriesLocalHeap互斥,指定了此属性,则不能指定maxEntriesLocalHeap。

如果设定过CacheManager的maxBytesLocalHeap属性,也不能使用此属性。

放入缓存的缓存项将使用net.sf.ehcache.pool.sizeof.SizeOf方法计算其字节数。

如果希望在计算字节数时忽略对象树种的某些属性,请参考net.sf.ehcache.pool.sizeof.annotations.IgnoreSizeOf注解。

⏹maxBytesLocalOffHeap:此属性仅在使用Ehcache企业版时有效。

设置本缓存区使用的非堆内存的大小。

指定此属性,将默认设置overflowToOffHeap 为true。

如果特别指定了overflowToOffHeap=”false”,将禁止使用非堆内存。

注意:当使用非堆内存时,推荐将maxEntriesLocalHeap设置为大于等于100,否则将严重影响性能。

也将看到一条警告日志。

非堆内存最小值为128MB,没有上限。

⏹maxBytesLocalDisk:和maxBytesLocalHeap属性类似,不过指定的是存储在本地磁盘上的缓存项最大可使用的字节数。

⏹timeToIdleSeconds:设置一个缓存项在过期前的闲置时间。

即一个缓存项在其过期前,两次访问间隔的最大时间。

仅在缓存项为非永久时有效。

0表示不限闲置时间,默认为0。

⏹timeToLiveSeconds:设置一个缓存项在过期前的生存时间。

即从缓存项创建到过期的最大时间。

仅在缓存项为非永久时有效。

0表示不限生存时间,默认为0。

⏹diskExpiryThreadIntervalSeconds:清理保存在磁盘上的过期缓存项目的线程的启动时间间隔,默认120秒。

⏹diskSpoolBufferSizeMB:磁盘缓冲区的大小。

写入磁盘的内容将缓冲在此区域,使用异步的方式写入磁盘。

默认30MB,每一个缓存区使用独立的缓冲区,如果遇到OutOfMemory错误时,可以尝试减小这个值。

改进磁盘写入性能时,尝试增加这个值。

将日志级别开到Trace,当DiskStore执行磁盘写入时,可以看到对应日志。

⏹clearOnFlush:当flush()方法调用时,MemoryStore是否清空其内容,默认为true,即清空。

⏹statistics:是否收集统计信息。

如果需要监控缓存使用情况,应该打开这个选项。

默认为关闭(统计会影响性能)。

设置statistics="true"开启统计。

⏹memoryStoreEvictionPolicy:当缓存项达到maxEntriesLocalHeap限制时,剔除缓存项的策略。

默认为LRU(Least Recently Used)。

其他的策略有:FIFO(First In First Out)和LFU(Less Frequently Used)。

⏹copyOnRead:当缓存项被读出时,是否返回一份它的拷贝(返回对象是缓存中对象的拷贝)。

默认false。

⏹copyOnWrite:当缓存项被写入时,是否写入一份它的拷贝(写入缓存的是写入对象的拷贝)。

默认false。

通过使用<persistence/>子元素,可以配置缓存区的持久化策略。

<persistence/>元素的主要属性如下:strategy:配置缓存区持久化的类型。

可选值如下:localRestartable:仅在使用Ehcache企业版时有效。

启用RestartStore,拷贝所有的缓存项(包含堆和非堆中的)到磁盘中,此选项提供了缓存快速重启能力以及对磁盘上缓存的容错能力。

localTempSwap:当缓存容量达到上限时,将缓存对象(包含堆和非堆中的)交换到磁盘中。

"localTempSwap" 并不持久化缓存内容。

none:不持久化缓存内容。

distributed:按照<terracotta>标签配置的持久化方式执行。

非分布式部署时,此选项不可用。

synchronousWrites:此属性仅在strategy="localRestartable"时有意义。

默认false。

设置为true,缓存写入方法在缓存项成功写入磁盘前不会返回。

至此,缓存区主要配置介绍完毕。

第3章旧版本向新版本迁移本章总结了Ehcache1.5版本向Ehcache2.6版本迁移时的一些问题:●maxElementsInMemory属性被maxEntriesLocalHeap代替。

●使用分布式缓存时,缓存区overflowToDis和diskPersistent都必须设置为"false"(分布式模式下不支持这个属性),maxElementsOnDisk属性建议设置为大于0的值(此时这个属性作用于Terracotta Server Array中这个缓存区,并非本地缓存)。

相关文档
最新文档