EHCACHE技术详解
ehcache 磁盘缓存 默认路径
ehcache 磁盘缓存默认路径摘要:1.介绍ehcache2.磁盘缓存的作用3.默认路径的设置4.总结正文:Ehcache 是一款非常流行的Java 缓存框架,它可以帮助我们有效地提高系统的性能和响应速度。
在Ehcache 中,磁盘缓存是一个非常重要的功能,它能够将缓存数据持久化到磁盘,从而在系统重启时能够快速地加载缓存数据。
而默认路径的设置则决定了磁盘缓存文件存储的位置。
首先,我们来了解一下Ehcache。
Ehcache 是一个开源的、可嵌入的、高性能的Java 缓存框架,它提供了多种缓存策略,如LRU(最近最少使用)、LFU(最不经常使用)等。
通过使用Ehcache,我们可以轻松地实现对数据的缓存,从而降低系统对数据库的访问次数,提高系统的性能。
接下来,我们来看一下磁盘缓存的作用。
在实际应用中,有时候我们需要将缓存数据持久化到磁盘,以便在系统重启时能够快速地加载缓存数据。
例如,当我们的系统需要运行一段时间后才能获取到完整的数据时,我们可以使用磁盘缓存将这些数据保存下来,以便下次运行时能够快速地加载。
这样,就可以避免重复计算或查询数据库,从而提高系统的响应速度。
然后,我们来看一下默认路径的设置。
默认情况下,Ehcache 会将磁盘缓存文件存储在项目的工作目录下。
但是,有时候我们需要将磁盘缓存文件存储在其他路径,以便更好地管理缓存文件。
这时,我们可以通过设置Ehcache 的配置文件来实现。
具体来说,我们可以在ehcache.xml 配置文件中设置`diskPersistent`和`diskExpiry`属性,从而指定磁盘缓存文件的存储路径和过期时间。
总结一下,Ehcache 是一款非常实用的Java 缓存框架,它可以帮助我们有效地提高系统的性能和响应速度。
在Ehcache 中,磁盘缓存是一个非常重要的功能,它能够将缓存数据持久化到磁盘,从而在系统重启时能够快速地加载缓存数据。
而默认路径的设置则决定了磁盘缓存文件存储的位置。
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缓存配置详解
一、设置diskstore,对所有的<cache/>和<defaultCache/>有效<!--设置缓存文件 .data 的创建路径。
如果该路径是 Java 系统参数,当前虚拟机会重新赋值,即获取该系统参数所代表的值。
下面的系统参数这样解释:user.home –用户主目录user.dir –用户当前工作目录 java.io.tmpdir--><diskStore path="java.io.tmpdir" />二、defaultCache :默认的管理策略,其配置用于被其它cache继承,包括被在代码中创建的cache继承。
三、缓存区使用<cache/>标签进行配置,主要属性以及意义如下:(1)name(必填属性):缓存区名称,用以区别缓存区,必须唯一。
(2)maxEntriesLocalHeap(必填属性):设置缓存在本地内存中最大(等效于旧版本中的maxElementsInMemory 缓存项数量(0表示无限)。
属性)。
在实际使用中,在非分布式部署条件下,无限等效于Integer.MAX_SIZE(2147483647)。
在分布式部署条件下,缓存项数量由Terracotta Server Array资源上限决定。
(3)maxEntriesLocalDisk(必填属性):设置保存在本地磁盘中的的最大缓存项数量。
默认为0,表示数量不限。
(4)eternal(必填属性):设置缓存项是否为永久的。
如果设置为true,缓存项的过期设置将被忽略,缓存项永不过期。
(5)overflowToOffHeap:此属性仅在使用Ehcache企业版时有效。
设置为true,缓存将使用非堆内存,非堆内存并非由Java管理,与Java 垃圾回收无关。
默认为false。
(6)maxBytesLocalHeap:定义保存在Java虚拟机堆内存中的缓存项的最大字节数。
ehcache缓存原理
ehcache缓存原理
Ehcache是一种基于Java的缓存框架,可以提供缓存服务,它的原理是将数据(对象)放入内存中存储,以提高系统的性能。
Ehcache 可以让应用程序更快地访问数据,而不必再从磁盘或数据库获取它。
Ehcache的核心是一种叫做“缓存”的技术,它将数据保存在快速访问的内存中,使其可以快速访问。
这种技术可以大大提高系统性能,并减少CPU和磁盘空间的使用率。
Ehcache使用一种叫做“淘汰”(eviction)的机制来管理它的缓存,也就是如果缓存中的数据量超过一定量,就会将相对不常访问的数据从缓存中移除掉。
这样可以节省很多内存,同时能够更快地访问缓存中的数据。
Ehcache还可以通过一种称为“缓存链接”(cache-chaining)的机制,来连接不同的缓存,以便在系统中存储更多的数据。
这样,当缓存中的数据超过一定量时,将自动向缓存链接中添加新的缓存,从而实现更好的数据存储空间。
Ehcache还支持持续性分区(persistent partitioning),这种技术可以将系统中的缓存数据分割成多个部分,每个部分存储的数据不会超过一定的大小,避免缓存溢出的现象。
另外,Ehcache还提供了一种称为“内存重用”(memory reclamation)的技术,目的是当系统中数据量变大时,可以释放系统中已经不再使用的缓存数据,以便用于存储新的数据。
总的来说,Ehcache的核心原理就是将系统中的数据存储在快速
访问的内存中,以提高系统的性能,同时也可以通过淘汰、缓存链接、持久性分区和内存重用等技术来管理Ehcache的缓存。
Ehcache的优势在于其可靠性高、支持多种数据格式以及用于整个系统的可扩展性。
EHCache详解_技术文档
目录0. 文档介绍 (2)0.1文档目的 (2)0.2文档范围 (2)0.3读者对象 (2)0.4参考文献 (2)0.5术语与缩写解释 (3)1.概述 (4)1.1背景 (4)1.2主要特征 (3)1.3环境 (5)1.4下载资源 (5)2. EHCACHE页面缓存的配置 (5)2.1EHC ACHE的类层次模型 (5)2.2环境搭建 (6)2.3 EHCACHE配置文件中元素说明................................................... 错误!未定义书签。
2.4在工程中单独使用...................................................................... 错误!未定义书签。
3. 在SPRING中运用EHCACHE ....................................................... 错误!未定义书签。
4. 分布式缓存集群环境配置 (19)4.1集群配置方式 (19)5. 测试用例 (28)0. 文档介绍0.1 文档目的记录使用EHCache实现页面级的缓存以及完成集群设计的过程。
0.2 文档范围记录使用EHCache实现页面级的缓存以及完成集群设计的过程。
0.3 读者对象任何有兴趣的家伙。
0.4 参考文献提示:列出本文档的所有参考文献(可以是非正式出版物),格式如下:[标识符] 作者,文献名称,出版单位(或归属单位),日期大部分都是网络上查询的资料,很多,不列举了。
0.5 术语与缩写解释1.概述1.1背景系统缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能. 缓存设想内存是有限的,缓存的时效性也是有限的,所以可以设定内存数量的大小,可以执行失效算法,可以在内存满了的时候,按照最少访问等算法将缓存直接移除或切换到硬盘上。
Java的进程内缓存框架:EhCache
Java的进程内缓存框架:EhCacheEhCache 是⼀个纯Java的进程内缓存框架,具有快速、精⼲等特点,是Hibernate中默认的CacheProvider。
Ehcache缓存的特点:1. 快速.2. 简单.3. 多种缓存策略4. 缓存数据有两级:内存和磁盘,因此⽆需担⼼容量问题5. 缓存数据会在虚拟机重启的过程中写⼊磁盘6. 可以通过RMI、可插⼊API等⽅式进⾏分布式缓存7. 具有缓存和缓存管理器的侦听接⼝8. ⽀持多缓存管理器实例,以及⼀个实例的多个缓存区域9. 提供Hibernate的缓存实现Ehcache缓存的使⽤(1) – 安装ehcacheEhcache 的特点,是⼀个纯Java ,过程中(也可以理解成插⼊式)缓存实现,单独安装Ehcache ,需把ehcache-X.X.jar 和相关类库⽅到classpath中。
如项⽬已安装了Hibernate ,则不需要做什么,直接可以使⽤Ehcache 。
Ehcache缓存的使⽤(2) - ⽣成CacheManager使⽤CacheManager 创建并管理Cache1.创建CacheManager有4种⽅式:A:使⽤默认配置⽂件创建Java代码1.CacheManager manager = CacheManager.create();B:使⽤指定配置⽂件创建Java代码1.CacheManager manager = CacheManager.create("src/config/ehcache.xml");C:从classpath中找寻配置⽂件并创建Java代码1.URL url = getClass().getResource("/anothername.xml");2.CacheManager manager = CacheManager.create(url);D:通过输⼊流创建Java代码1.InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath());2.try {3.manager = CacheManager.create(fis);4.} finally {5.fis.close();6.}Ehcache缓存的使⽤(3) – 解读Ehcache配置⽂件ehcache.xml重要的参数<diskStore path="D:/work2/renhewww/cache"/><cache name=" sampleCache1"maxElementsInMemory="1"maxElementsOnDisk="10000"eternal="false"overflowToDisk="true"diskSpoolBufferSizeMB="20"diskPersistent="true"timeToIdleSeconds="43200"timeToLiveSeconds="86400"memoryStoreEvictionPolicy="LFU"/>属性解释:必须属性:name:设置缓存的名称,⽤于标志缓存,惟⼀maxElementsInMemory:在内存中最⼤的对象数量maxElementsOnDisk:在DiskStore中的最⼤对象数量,如为0,则没有限制eternal:设置元素是否永久的,如果为永久,则timeout忽略overflowToDisk:是否当memory中的数量达到限制后,保存到Disk可选的属性:timeToIdleSeconds:设置元素过期前的空闲时间timeToLiveSeconds:设置元素过期前的活动时间diskPersistent:是否disk store在虚拟机启动时持久化。
Ehcache缓存框架详解
Ehcache缓存框架详解一、前言ehcache是一个比较成熟的Java缓存框架,它提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案。
ehcache最早从hibernate发展而来。
由于3.x的版本和2.x的版本API差异比较大。
这里直接学习最新版本的了,但是最后整合spring的时候还是有2.x。
二、安装由于我的项目是使用maven管理的,因此只要在pom文件中添加如下代码即可。
<dependency><groupId>javax.cache</groupId><artifactId>cache-api</artifactId><version>1.0.0</version></dependency><dependency><groupId>org.ehcache</groupId><artifactId>ehcache</artifactId><version>3.3.1</version></dependency>好像ehcache还要依赖上面的那个Cache,因此最好两个多加上。
三、使用1、快速入门__JA V A实现CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder() .withCache("preConfigured",CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(10))).build();cacheManager.init();Cache<Long, String> preConfigured =cacheManager.getCache("preConfigured", Long.class, String.class);Cache<Long, String> myCache = cacheManager.createCache("myCache",CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(10)));myCache.put(1L, "da one!");String value = myCache.get(1L);cacheManager.removeCache("preConfigured");cacheManager.close();这里使用的官网的例子。
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缓存参数时,需要注意以下几点:- 根据应用程序的需求合理设置缓存的空闲和存活时间,以免存储过期或无用的数据。
Ehcache介绍
Ehcache介绍关键字:Ehcache、缓存Ehcache是一个缓存库。
在开始介绍Ehcache之前,首先介绍一下常规的缓存。
1 关于缓存以下是维基百科中对于缓存的解释:在计算机工程领域,缓存是透明的存储以后需要的快速使用的数据的组件。
存储在缓存中的数据可能是先前已经计算好的数据或存储在别处数据的副本。
如果数据存储在缓存中,数据请求可以通过读取缓存快速的被处理。
否则(如果不在缓存中),数据不得不被重新计算或从原来存储介质中提取,相比较从缓存中读取而言,处理速度较慢。
因此,缓存可以处理越多的数据请求的话,系统性能就会越好。
[译文, 参见参考文献1]2 关于EhcacheEhcache是一个开源、基于标准(JSR107 JCACHE,参考文献3)、用来提高性能、降低数据库压力并简化可伸缩性的缓存库(关于可伸缩性,参见参考文献4)。
Ehcache是健全的、经过验证的、全特性的、使用最广泛的基于Java的缓存库。
它可以使用千兆级别的缓存,从处理中的单个或多个节点扩充到处理中/非处理中混合配置。
当应用系统需要连贯的分布式缓存时,Ehcache使用开源的Terracotta服务阵列3 Ehcache特性3.1快速和轻量级多年来,各种不同的性能测试已经表明Ehcache是最快的Java缓存之一。
Ehcache的线程是为大规模的、高并发的系统设计的。
很多Ehcache用户几乎不知道它们在使用Ehcache, 合理的默认行为不需要初始配置。
API非常简单,容易使用,使得Ehcache可以在几分钟内启动和与运行。
3.2可伸缩为提供扩展到千兆字节,提供内存和磁盘存储。
最大的Ehcache安装在千兆字节范围上使用内存和磁盘存储,Ehcache依内存和磁盘大小被调整。
扩展到几百个缓存。
最大的Ehcache安装使用几百个缓存。
调整大型多CPU服务器的并发负载。
线程安全和性能之间有一种拉力。
Ehcache的的线程初始时是粗粒度的,但已越来越多地使用Doug Lea(参见参考文献5)的建议,来实现更高的性能。
ehcache使用文档
Ehcache使用文档作者:sunyf2013年11月1 基本介绍1.1前言Ehcache是一个快速的、轻量级的、易于使用的、进程内的缓存。
它支持read-only 和read/write 缓存,内存和磁盘缓存。
是一个非常轻量级的缓存实现,而且从1.2 之后就支持了集群,目前的最新版本是2.5。
简单地说来,ehcache有以下特点:●快速.●简单.●多种缓存策略●缓存数据有两级:内存和磁盘,因此无需担心容量问题●缓存数据会在虚拟机重启的过程中写入磁盘●可以通过RMI、可插入API 等方式进行分布式缓存●具有缓存和缓存管理器的侦听接口●支持多缓存管理器实例,以及一个实例的多个缓存区域●提供Hibernate 的缓存实现2 安装和使用2.1下载Ehcache的官方网站/downloads/catalog 上面可以下载到各种版本。
目前用最新版本是2.5.1,下载这个版本即可。
(下载之前,会要求用户注册,按照要求输入即可)。
建议下载ehcache-2.5.1-distribution.tar.gz文件,因为这个文件包含了所有Ehcache的内容。
2.2安装2.2.1 发布包内容说明将ehcache-2.5.1-distribution.tar.gz解压到本地文件系统。
在安装之前,我们先来大致看看发布包里边的内容,如下图2.1所示。
图2.1如一般的开源框架发布包类似,ehcahce的发布包包含以下目录内容:javadoc:ehcache的API文档;lib:ehcache要用到的第三方jar包和自己的jar包;licenses:ehcache的授权文件;samples:ehcache的例子目录;src:ehcache的源代码目录;terracotta:使用terracotta集群时的terracotta服务;ehcache.xml:ehcache的配置文件模板,包括各个配置的英文解释;ehcache.xsd:ehcache.xml文件的验证文件模板;QUICK-START.html:快速开始文件,会连接到ehcache的官方网站;README.html:ehcache版本功能和新特性说明文件。
Ehcache中文指南和实例教程
Ehcache内存框架介绍1.背景及基础介绍目的:使用缓存技术缓解数据库压力,提高访问速度,牺牲内存空间换取时间;1.1流行缓存框架简介(1)OSCache OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。
OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。
拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。
永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。
支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。
缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。
(2)Java Caching system JSC(Java Caching system)是一个用分布式的缓存系统,是基于服务器的java应用程序。
它是通过提供管理各种动态缓存数据来加速动态web应用。
JCS和其他缓存系统一样,也是一个用于高速读取,低速写入的应用程序。
动态内容和报表系统能够获得更好的性能。
如果一个网站,有重复的网站结构,使用间歇性更新方式的数据库(而不是连续不断的更新数据库),被重复搜索出相同结果的,就能够通过执行缓存方式改进其性能和伸缩性。
(3)JCache JCache是个开源程序,正在努力成为JSR-107开源规范,JSR-107规范已经很多年没改变了。
这个版本仍然是构建在最初的功能定义上。
(4)ShiftOne ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Java lib,就像一个轻量级的配置缓存工作状态的框架。
(5)SwarmCache SwarmCache是一个简单且有效的分布式缓存,它使用IP multicast与同一个局域网的其他主机进行通讯,是特别为集群和数据驱动web应用程序而设计的。
ehcache原理
ehcache原理Ehcache是一个开源的、高性能的Java缓存库,它可以被用于在Java应用程序中进行缓存数据以提高性能。
以下是Ehcache的原理。
1.缓存机制:Ehcache将数据存储在内存中,以提高访问速度。
它使用一个固定的内存空间作为缓存区域,当缓存被填满时,它会使用一种LRU(最近最少使用)策略来替换最旧的缓存项。
Ehcache还可以将缓存项存储在磁盘上,以便在应用程序重启时持久化缓存数据。
2.键值对存储:Ehcache使用键值对的方式存储缓存项。
每个缓存项都有一个唯一的键和一个对应的值。
通过键,应用程序可以在缓存中查找和访问相应的值。
3.缓存策略:Ehcache提供了多种缓存策略来满足不同的需求。
例如,可以通过设置缓存的存活时间来控制缓存项的有效期,一旦超过了指定的时间,缓存项将会过期并被移出缓存区域。
此外,Ehcache还支持基于空间大小的缓存策略,通过设置缓存的最大容量,可以限制缓存中存储的缓存项数量,以防止缓存过度填充。
4.缓存失效:Ehcache提供了多种缓存失效的方式。
除了根据时间或空间来失效缓存项之外,Ehcache还支持手动失效缓存项,即应用程序可以通过指定键来从缓存中移除特定的缓存项。
5.缓存管理:Ehcache允许应用程序对缓存进行管理和配置。
可以通过配置文件或程序代码来设置缓存的属性,例如存活时间、最大容量等。
Ehcache还提供了监控和统计功能,以便了解缓存的使用情况和性能。
6.缓存同步:Ehcache支持多线程环境下的缓存同步。
当多个线程同时访问同一个缓存项时,Ehcache会通过锁机制来确保只有一个线程更新缓存数据。
其他线程将等待更新完成后再获取数据,以保证数据的一致性。
7.分布式缓存:Ehcache还支持分布式缓存,在集群环境下可以将缓存数据存储在多个节点上。
Ehcache使用RMI机制来实现节点之间的通信和缓存数据的同步。
分布式缓存可以提高应用程序的可伸缩性和容错性。
EhCache使用详细介绍(转)
EhCache使用详细介绍(转)Ehcache中不仅可以用配置文件来配置缓存,而在代码中也可以实现同样的功能。
CacheManager singletonManager = CacheManager.create();Cache memoryOnlyCache = new Cache(“testCache”, 50000, false, false, 8, 2);Cache test = singletonManager.getCache(“testCache”);删除只需要调用singletonManager.removeCache(“testCache”);Shotdown CacheManager在使用完Ehcache后,必须要shutdown缓存。
Ehcache中有自己的关闭机制,不过最好在你的代码中显示调用CacheManager.getInstance().shutdown();1.EhCache是什么EhCache是Hibernate的二级缓存技术之一,可以把查询出来的数据存储在内存或者磁盘,节省下次同样查询语句再次查询数据库,大幅减轻数据库压力;2.EhCache的使用注意点当用Hibernate的方式修改表数据(save,update,delete等等),这时EhCache会自动把缓存中关于此表的所有缓存全部删除掉(这样能达到同步)。
但对于数据经常修改的表来说,可能就失去缓存的意义了(不能减轻数据库压力);3.EhCache使用的场合3.1比较少更新表数据EhCache一般要使用在比较少执行write操作的表(包括update,insert,delete等)[Hibernate的二级缓存也都是这样];3.2对并发要求不是很严格的情况两台机子中的缓存是不能实时同步的;4.在项目做的实现4.1在工程的src目录下添加ehcache.xml文件,内容如下:<?xml version="1.0" encoding="UTF-8"?><ehcache><diskStore path="java.io.tmpdir" /><defaultCache maxElementsInMemory="5"<!--缓存可以存储的总记录量-->eternal="false"<!--缓存是否永远不销毁-->overflowToDisk="true"<!--当缓存中的数据达到最大值时,是否把缓存数据写入磁盘-->timeToIdleSeconds="15"<!--当缓存闲置时间超过该值,则缓存自动销毁-->timeToLiveSeconds="120"<!--缓存创建之后,到达该缓存自动销毁-->/></ehcache>4.2在Hibernate.cfg.xml中的mapping标签上面加以下内容:<property name="show_sql">true</property><propertyname="hibernate.cache.provider_class">org.hibernate.cache.Eh CacheProvider</property><propertyname="e_query_cache">true</property>4.3在要缓存的bean的hbm.xml文件中的class标签下加入以下内容:<cache usage="read-only" /><!--也可读写-->4.4创建DAO,内容如下:Session s = HibernateSessionFactory.getSession();Criteria c = s.createCriteria(Xyz.class);c.setCacheable(true);//这句必须要有System.out.println("第一次读取");List l = c.list();System.out.println(l.size());HibernateSessionFactory.closeSession();s = HibernateSessionFactory.getSession();c = s.createCriteria(Xyz.class);c.setCacheable(true);//这句必须要有System.out.println("第二次读取");l = c.list();System.out.println(l.size());HibernateSessionFactory.closeSession();4.5这时你会看到打印出来的信息为(表示第二次并没有去读库):第一次读取Hibernate: *******13第二次读取13配置Spring+hibernate使用ehcache作为second-level cache 大量数据流动是web应用性能问题常见的原因,而缓存被广泛的用于优化数据库应用。
ehcache 的使用场景
ehcache 的使用场景
ehcache 是一个广泛使用的开源 Java 分布式缓存,它提供了
一个高效的缓存解决方案,可以大大提高应用程序的性能和扩展性。
ehcache 的使用场景非常广泛,下面将介绍一些常见的使用场景。
1. 数据库查询结果缓存。
在许多应用程序中,数据库查询是性能瓶颈之一。
通过使用ehcache,可以将数据库查询结果缓存在内存中,避免重复的数据库
访问,从而大大提高应用程序的性能。
2. 对象缓存。
在某些情况下,应用程序需要频繁地创建和销毁对象,这会导
致内存的频繁分配和回收,影响应用程序的性能。
通过使用ehcache,可以将经常使用的对象缓存在内存中,减少对象的创建和
销毁次数,提高应用程序的性能。
3. 分布式缓存。
在分布式系统中,数据的一致性和性能是非常重要的。
ehcache 提供了分布式缓存的解决方案,可以将缓存数据分布在多个节点上,从而提高系统的性能和可扩展性。
4. 页面缓存。
对于 Web 应用程序,页面的渲染是一个非常耗时的过程。
通过
使用 ehcache,可以将页面的渲染结果缓存在内存中,减少页面的
渲染次数,提高 Web 应用程序的性能。
总的来说,ehcache 的使用场景非常广泛,可以应用于各种类
型的应用程序中,从而提高应用程序的性能和可扩展性。
希望以上
介绍的使用场景可以帮助您更好地理解 ehcache 的应用价值。
ehcache 磁盘缓存 默认路径
ehcache 磁盘缓存默认路径(原创版)目录1.Ehcache 简介2.磁盘缓存的作用和原理3.默认路径的设置和修改4.实际应用中的注意事项正文【Ehcache 简介】Ehcache 是一款开源的 Java 缓存框架,它可以帮助开发者轻松地实现分布式缓存。
Ehcache 支持多种缓存策略和存储方式,包括内存缓存、磁盘缓存等。
在 Ehcache 中,磁盘缓存是一种将数据存储到磁盘上的缓存方式,当内存缓存空间不足时,数据会自动转存到磁盘上。
【磁盘缓存的作用和原理】磁盘缓存的主要作用是扩展内存缓存的存储空间,防止内存溢出导致数据丢失。
磁盘缓存的原理是将数据分成多个块,按照一定的规则存储到磁盘上。
当需要访问某个数据时,Ehcache 会首先在内存缓存中查找,如果找不到,再从磁盘缓存中读取。
【默认路径的设置和修改】Ehcache 的磁盘缓存默认路径是 Java 虚拟机的用户目录下的.ehcache 文件夹。
这个路径可以通过修改 Ehcache 的配置文件来更改。
具体操作如下:1.打开 Ehcache 的配置文件(例如:ehcache.xml);2.找到<diskStore>标签,并修改其<location>属性;3.将新的路径值替换掉原有的默认路径。
【实际应用中的注意事项】在实际应用中,磁盘缓存需要考虑以下几点:1.磁盘缓存的读写速度相对较慢,因此要合理调整缓存策略,尽量减少磁盘缓存的使用;2.磁盘缓存的存储空间有限,需要定期对缓存数据进行清理和优化;3.磁盘缓存的数据安全性较低,建议对敏感数据进行加密处理。
ehcache 缓存参数
ehcache 缓存参数Ehcache 是一个快速、开源、Java 缓存框架,用于提高应用程序的性能和扩展性。
它提供了许多用于配置和优化缓存的参数。
在本文中,我们将深入研究Ehcache 缓存参数,了解它们的作用和如何配置它们以达到最佳性能。
1. 最大缓存元素数量(maxEntries)maxEntries 参数用于设置缓存最多可以容纳的元素数量。
当缓存中的元素数量达到此值时,便会触发缓存淘汰策略,以释放空间存储新的元素。
配置此参数时,需要根据应用程序的内存使用情况和硬件资源来决定。
2. 缓存过期时间(timeToLiveSeconds 和 timeToIdleSeconds)使用 timeToLiveSeconds 参数可以设置缓存元素的全局过期时间。
一旦设置的时间到达,缓存中所有的元素将被清除。
timeToIdleSeconds 参数用于设置元素的闲置时间,默认情况下,元素不会因为闲置而过期,只有在访问时才会更新其闲置时间。
根据应用程序的业务需求,可以根据元素的特性来配置这两个参数。
3. 内存存储策略(memoryStoreEvictionPolicy)Ehcache 提供了多种内存存储策略,用于确定在缓存空间不足时如何选择要移除的元素。
其中包括 LRU(最近最少使用)、LFU(最不常用)和FIFO(先进先出)等。
选择合适的存储策略很重要,因为它直接影响了缓存的性能和存储效率。
4. 磁盘存储策略(overflowToDisk 和 maxEntriesLocalDisk)如果缓存元素的数量超过了内存容量的限制,那么 Ehcache 将使用磁盘存储策略来保存溢出的元素。
可以通过设置overflowToDisk 参数为true 来启用磁盘存储。
为了控制缓存使用的磁盘空间,可以使用 maxEntriesLocalDisk 参数设置最大磁盘存储元素的数量。
5. 堆外缓存(offheap)Ehcache 还提供了堆外缓存的支持。
ehcache缓存配置详解
一、设置diskstore,对所有的<cache/>和<defaultCache/>有效<!--设置缓存文件 .data 的创建路径。
如果该路径是 Java 系统参数,当前虚拟机会重新赋值,即获取该系统参数所代表的值。
下面的系统参数这样解释:user.home –用户主目录user.dir –用户当前工作目录 java.io.tmpdir--><diskStore path="java.io.tmpdir" />二、defaultCache :默认的管理策略,其配置用于被其它cache继承,包括被在代码中创建的cache继承。
三、缓存区使用<cache/>标签进行配置,主要属性以及意义如下:(1)name(必填属性):缓存区名称,用以区别缓存区,必须唯一。
(2)maxEntriesLocalHeap(必填属性):设置缓存在本地内存中最大(等效于旧版本中的maxElementsInMemory 缓存项数量(0表示无限)。
属性)。
在实际使用中,在非分布式部署条件下,无限等效于Integer.MAX_SIZE(2147483647)。
在分布式部署条件下,缓存项数量由Terracotta Server Array资源上限决定。
(3)maxEntriesLocalDisk(必填属性):设置保存在本地磁盘中的的最大缓存项数量。
默认为0,表示数量不限。
(4)eternal(必填属性):设置缓存项是否为永久的。
如果设置为true,缓存项的过期设置将被忽略,缓存项永不过期。
(5)overflowToOffHeap:此属性仅在使用Ehcache企业版时有效。
设置为true,缓存将使用非堆内存,非堆内存并非由Java管理,与Java 垃圾回收无关。
默认为false。
(6)maxBytesLocalHeap:定义保存在Java虚拟机堆内存中的缓存项的最大字节数。
ehcache缓存参数
ehcache缓存参数缓存是一种常用的提升系统性能的技术,它可以将数据存储在高速缓存中,以便快速响应用户的请求,减少对数据库等底层资源的访问。
而ehcache是一种常用的Java缓存框架,它具有简单易用、高性能、可扩展等特点,被广泛应用于各种Java项目中。
本文将介绍ehcache缓存参数的相关知识,帮助读者更好地理解和使用ehcache。
一、缓存策略在使用ehcache进行缓存时,需要根据具体的需求选择适合的缓存策略。
ehcache提供了多种缓存策略,包括FIFO(先进先出)、LRU(最近最少使用)、LFU(最不常用)等。
这些策略都有各自的优劣势,需要根据实际情况进行选择。
比如,如果希望尽量减少缓存的占用空间,可以选择LFU策略;如果希望保证缓存的命中率,可以选择LRU策略。
在ehcache中,可以通过配置文件或代码来指定缓存策略。
二、缓存大小缓存大小是指缓存可以存储的最大数据量。
ehcache提供了多种配置方式来设置缓存大小,包括固定大小、最大元素数、最大占用内存等。
在配置缓存大小时,需要考虑系统的内存资源和数据量大小,以避免缓存溢出或占用过多内存的情况发生。
可以根据实际情况进行调整,以达到性能和资源的平衡。
三、缓存过期时间缓存过期时间是指缓存中的数据在一定时间后自动失效。
在ehcache中,可以通过配置文件或代码来设置缓存的过期时间。
根据实际需求,可以设置不同的过期时间,以满足业务的要求。
比如,对于一些频繁变动的数据,可以设置较短的过期时间,以保证数据的及时更新;对于一些不经常变动的数据,可以设置较长的过期时间,以提高缓存的命中率。
四、缓存刷新时间缓存刷新时间是指缓存中的数据在一定时间后自动刷新。
在ehcache中,可以通过配置文件或代码来设置缓存的刷新时间。
与缓存过期时间不同的是,缓存刷新时间是在缓存过期前一定时间内,自动刷新缓存的数据。
这样可以保证在缓存失效前,始终有可用的数据,避免了缓存失效时的数据不一致问题。
ehcache技术详解
Ehcache技术详解1 基本概念EHCache是一个快速的、轻量级的、易于使用的、进程内的缓存。
它支持read-only和read/write 缓存,内存和磁盘缓存。
是一个非常轻量级的缓存实现,而且从1.2 之后就支持了集群,目前的最新版本是2.8。
1.1 主要特性(1)快速、简单(2)提供LRU、LFU和FIFO 缓存策略(3)缓存数据有两级:内存和磁盘,因此无需担心容量问题(4)缓存数据会在虚拟机重启的过程中写入磁盘(5)支持分布式缓存(6)支持多缓存管理器实例,以及一个实例的多个缓存区域2 部署2.1 引入官网地址:/下载发布包ehcache-2.8.1-distribution.tar.gz并解压1、将lib下的jar包引入自己的工程包括核心包:ehcache-2.8.1.jar,依赖jar包:slf4j-api-1.6.6.jar,slf4j-jdk14-1.6.6.jar2、将ehcache.xml放到src目录下。
2.2 配置ehcache.xml中的内容如下:<?xml version="1.0"encoding="UTF-8"?><ehcache xmlns:xsi="/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="/ehcache.xsd"> <diskStore path="java.io.tmpdir"/><cache name="sampleCache1"maxEntriesLocalHeap="10000"maxEntriesLocalDisk="1000"eternal="false"overflowToDisk="true"diskPersistent="true"diskSpoolBufferSizeMB="20"timeToIdleSeconds="300"timeToLiveSeconds="600"memoryStoreEvictionPolicy="LFU"diskExpiryThreadIntervalSeconds ="120"transactionalMode="off"><cacheEventListenerFactoryclass="com.ehcache.EhcacheListenerTest"properties="wxwtestkey=200,wxtestkey2=300"/><persistence strategy="localTempSwap"/></cache></ehcache>配置项详解:<diskStore path="java.io.tmpdir"/>此配置项配置的是,磁盘缓存的位置。
EHCache入门
EHCache入门系列(一)–简介及配置一、简介ehcache 是一个非常轻量级的缓存实现,而且从1.2 之后就支持了集群,而且是hibernate 默认的缓存provider 。
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。
Ehcache可以直接使用。
也可以和Hibernate对象/关系框架结合使用。
还可以做Servlet缓存。
Cache 存储方式:内存或磁盘。
官方网站:/主要特性1. 快速.2. 简单.3. 多种缓存策略4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题5. 缓存数据会在虚拟机重启的过程中写入磁盘6. 可以通过RMI、可插入API等方式进行分布式缓存7. 具有缓存和缓存管理器的侦听接口8. 支持多缓存管理器实例,以及一个实例的多个缓存区域9. 提供Hibernate的缓存实现二、快速上手1、项目类库中添加ehcache.jar;2、在类路径下编写ehcache.xml配置文件。
三、配置文件参数详解ehcache.xml是ehcache的配置文件,并且存放在应用的classpath中。
下面是对该XML 文件中的一些元素及其属性的相关说明:<diskStore>元素:指定一个文件目录,当EHCache把数据写到硬盘上时,将把数据写到这个文件目录下。
下面的参数这样解释:user.home –用户主目录user.dir –用户当前工作目录java.io.tmpdir –默认临时文件路径<defaultCache>元素:设定缓存的默认数据过期策略。
<cache>元素:设定具体的命名缓存的数据过期策略。
<cache>元素的属性name:缓存名称。
通常为缓存对象的类名(非严格标准)。
maxElementsInMemory:设置基于内存的缓存可存放对象的最大数目。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
import net.sf.ehcache.event.CacheEventListener;
import net.sf.ehcache.event.CacheEventListenerFactory; public class EhcacheListenerTest extends CacheEventListenerFactory { @Override
xsi:noNamespaceSchemaLocation="/ehcache.xsd">
2016-10-27 第 1页, 共 10页
<cache name="sampleCache1"
maxEntriesLocalHeap="10000" maxEntriesLocalDisk="1000" eternal="false" overflowToDisk="true" diskPersistent="true" diskSpoolBufferSizeMB="20" timeToIdleSeconds="300" timeToLiveSeconds="600"
2 部署
2.1 引入
官网地址:/ 下载发布包 ehcache-2.8.1-distribution.tar.gz并解压 1、 将lib下的jar包引入自己的工程 包括核心包:ehcache-2.8.1.jar,依赖jar包: slf4j-api-1.6.6.jar,slf4j-jdk14-1.6.6.jar 2、 将ehcache.xml放到src目录下。
props) {
public CacheEventListener createCacheEventListener(Properties
2016-10-27
第 4页, 共 10页
System.out.println("==create listener=="); for(Object key : props.keySet()) { } }
memoryStoreEvictionPolicy="LFU" transactionalMode="off">
diskExpiryThreadIntervalSeconds ="120" <cacheEventListenerFactory
class="com.ehcache.EhcacheListenerTest"
element) { }
public void notifyElementExpired(Ehcache ehcache, Element
System.out.println("==notifyElementExpired");
public void notifyElementPut(Ehcache ehcache, Element element) { } throws CacheException
public void notifyRemoveAll(Ehcache ehcache) { } } System.out.println("==notifyRemoveAll");
}
通过监听,在对cache做操作时,调用相应的监听类方法。
ehcache的基本用法就是这样。根据以上的基本用法,我们就更容易理解以下ehcache的一些 复杂应用。
public void dispose() System.out.println("==dispose");
element) { }
public void notifyElementEvicted(Ehcache ehcache, Element
System.out.println("==notifyElementEvicted");
转到磁盘时,会先将数据转入此缓存,然后由后台线程将数据从缓存中持久化到磁盘。
2016-10-27 第 2页, 共 10页
timeToIdleSeconds="300":表示缓存空闲300s后被销毁。 timeToLiveSeconds="600":表示缓存最长可以存在300s,然后被销毁。
Ehcache的三种清空策略, FIFO: 先进先出。 LFU: memoryStoreEvictionPolicy="LFU": 一直以来最少被使用的,即缓存的元素有一个hit属性,hit值最小的将会被清出缓存。LRU: 最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新 的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。
</cache> </ehcache>
<persistence strategy="localTempSwap"/>
properties="wxwtestkey=200,wxtestkey2=300"/>
配置项详解:
<diskStore path="java.io.tmpdir"/>
此配置项配置的是,磁盘缓存的位置。其中java.io.tmpdir的具体位置可以由java代码, System.getProperty("java.io.tmpdir") 来查看。此处的path也可以配置成 user.home,user.dir 或用户设定的系统变量指定的路径。
System.out.println("==notifyElementPut");
element) { }
public void notifyElementRemoved(Ehcache ehcache, Element throws CacheException System.out.println("==notifyElementRemoved");
Element find = cache.get("key1"); 4、关闭mananger. manager.shutdown(); 另外,Ehcache还提供了监听的机制,在如上的配置文件中: <cacheEventListenerFactory class="com.ehcache.EhcacheListenerTest" properties="wxwtestkey=200,wxtestkey2=300"/>
其中class是自定义的实现类,继承CacheEventListenerFactory,覆盖 createCacheEventListener(Properties props)方法。EhcacheListenerTest代码 如下所示: package com.ehcache; import java.util.Properties; import net.sf.ehcache.CacheException; import net.sf.ehcache.Ehcache; import net.sf.ehcache.Element;
来指定路径。
2016-10-27 第 3页, 共 10页
CacheManager manager = CacheManager.create();
2、获取缓存区,根据ehcache.xml中配置的cache节点,指定name来获取cache. Cache cache = manager.getCache("sampleCache1"); 3、创建key-value形式的元素,存入缓存区,或从缓存区取出。 Element element = new Element("key1", "wxwtest"); cache.put(element);
Ehcache技术详解
1 基本概念
EHCache是一个快速的、 轻量级的、 易于使用的、 进程内的缓存。 它支持read-only和read/write 缓存,内存和磁盘缓存。是一个非常轻量级的缓存实现,而且从1.2 之后就支持了集群,目 前的最新版本是2.8。
1.1
主要特性
(1) 快速、简单 (2) 提供LRU、LFU和FIFO 缓存策略 (3) 缓存数据有两级:内存和磁盘,因此无需担心容量问题 (4) 缓存数据会在虚拟机重启的过程中写入磁盘 (5) 支持分布式缓存 (6) 支持多缓存管理器实例,以及一个实例的多个缓存区域
2.2
配置
ehcache.xml中的内容如下:
<?xml version="1.0" encoding="UTF-8"1/XMLSchema-instance" <diskStore path="java.io.tmpdir"/>
2016-10-27
第 6页, 共 10页
<persistence strategy="localTempSwap"/> </defaultCache> 3、 修改Mapper.xml,加上<cache 节点,例如: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.mybatis.dao.TestDAO"> <cache type="org.mybatis.caches.ehcache.EhcacheCache"/> <!—也可以是 <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>--> <resultMap id="BaseResultMap" …… </resultMap> <select id="getTestBean" resultMap="xxx" parameterType="java.util.Map"> …… </select> </mapper> 4、 mybatis默认是启用cache的,所以对于某一条不想被cache的sql需要把 useCache="false"加上。例如: <select id="getCategory" parameterType="string" resultType="xxx" useCache="false"> …… </select>