EHCache介绍

合集下载

Ehcache 2 缓存区配置详解

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。

典型的配置文件如下:<?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(必填属性):缓存区名称,用以区别缓存区,必须唯一。

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:设置基于内存的缓存可存放对象的最大数目。

maxElementsOnDisk:设置基于硬盘的缓存可存放对象的最大数目。

8种缓存框架介绍

8种缓存框架介绍

8种缓存框架介绍缓存框架是一种用于存储和管理缓存数据的软件工具或库。

它们用于提高应用程序的性能,减少数据库或其他远程资源的访问次数。

在本文中,我们将介绍8种流行的缓存框架,包括Redis、Memcached、Ehcache、Guava Cache、Caffeine、Hazelcast、Infinispan和Apache Geode。

1. Redis: Redis是一个基于内存的缓存框架,提供了丰富的数据结构和灵活的功能,包括缓存、消息队列和数据持久化。

Redis的性能出色,并且具有高可用性和扩展性。

2. Memcached: Memcached是另一个流行的基于内存的缓存框架,广泛用于提高Web应用程序的性能。

它具有简单的架构和易于使用的API。

Memcached可以在多台服务器上进行水平扩展,以提供更高的负载能力。

3. Ehcache: Ehcache是一个Java缓存框架,可以用于将缓存添加到应用程序中。

它具有简单易用的API,并提供了多种缓存策略,如LRU (最近最少使用)和FIFO(先进先出)。

Ehcache还支持磁盘持久化和分布式缓存。

4. Guava Cache: Guava Cache是Google开发的一个轻量级缓存库,可以在本地JVM中实现缓存功能。

它具有内存敏感的淘汰策略和异步加载机制,可以优化资源利用和应用程序响应时间。

5. Caffeine: Caffeine是另一个基于本地内存的缓存库,由Google开发。

它被设计为高性能、无锁的缓存框架,并且具有比Guava Cache更高的吞吐量和更低的延迟。

6. Hazelcast: Hazelcast是一个分布式缓存框架和数据网格,可以在多个服务器上共享缓存数据。

它提供了分布式数据结构和分布式计算功能,并支持高可用性和容错性。

7. Infinispan: Infinispan是另一个开源的分布式缓存框架,用于构建高性能和高可靠性的应用程序。

ehcache、memcache、redis三大缓存比较

ehcache、memcache、redis三大缓存比较

ehcache、memcache、redis三⼤缓存⽐较最近项⽬组有⽤到这三个缓存,去各⾃的官⽅看了下,觉得还真的各有千秋!今天特意归纳下各个缓存的优缺点,仅供参考!Ehcache在项⽬⼴泛的使⽤。

它是⼀个开源的、设计于提⾼在数据从RDBMS中取出来的⾼花费、⾼延迟采取的⼀种缓存⽅案。

正因为Ehcache具有健壮性(基于java开发)、被认证(具有apache 2.0license)、充满特⾊(稍后会详细介绍),所以被⽤于⼤型复杂分布式web application的各个节点中。

什么特⾊?1. 够快Ehcache的发⾏有⼀段时长了,经过⼏年的努⼒和不计其数的性能,Ehcache终被设计于large, high concurrency systems.2. 够简单开发者提供的接⼝⾮常简单明了,从Ehcache的搭建到运⽤运⾏仅仅需要的是你宝贵的⼏分钟。

其实很多开发者都不知道⾃⼰⽤在⽤Ehcache,Ehcache被⼴泛的运⽤于其他的开源项⽬⽐如:3.够袖珍关于这点的特性,官⽅给了⼀个很可爱的名字small foot print ,⼀般Ehcache的发布版本不会到2M,V 2.2.3 才 668KB。

4. 够轻量核⼼程序仅仅依赖slf4j这⼀个包,没有之⼀!5.好扩展Ehcache提供了对的内存和硬盘的存储,最近版本允许多实例、保存对象⾼灵活性、提供LRU、LFU、FIFO淘汰,基础属性⽀持热配置、⽀持的插件多6.监听器缓存管理器监听器(CacheManagerListener)和缓存监听器(CacheEvenListener),做⼀些统计或数据⼀致性⼴播挺好⽤的如何使⽤?够简单就是Ehcache的⼀⼤特⾊,⾃然⽤起来just so easy!贴⼀段基本使⽤代码CacheManager manager = CacheManager.newInstance("src/config/ehcache.xml");Ehcache cache = new Cache("testCache", 5000, false, false, 5, 2);cacheManager.addCache(cache);name:缓存名称。

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 中,磁盘缓存是一个非常重要的功能,它能够将缓存数据持久化到磁盘,从而在系统重启时能够快速地加载缓存数据。

而默认路径的设置则决定了磁盘缓存文件存储的位置。

Java中的分布式缓存框架有哪些

Java中的分布式缓存框架有哪些

Java中的分布式缓存框架有哪些随着互联网应用的快速发展,分布式缓存已经成为了提高系统性能和扩展性的关键技术之一。

在Java开发领域,也涌现了许多优秀的分布式缓存框架。

本文将介绍几个Java中常用的分布式缓存框架,并分析它们的特点和适用场景。

一、EhcacheEhcache是一个开源的Java缓存框架,被广泛应用于各种Java应用中。

它提供了基于内存和磁盘的缓存机制,支持分布式部署,能够满足大规模应用的缓存需求。

Ehcache具有轻量级、易于使用和快速的特点,适合用于小型和中型的应用系统。

二、RedisRedis是一种高性能的内存数据存储系统,支持多种数据结构,可以用作分布式缓存的解决方案。

Redis提供了持久化和复制机制,可以实现高可用性和数据持久化。

同时,Redis还具有丰富的功能,如发布订阅、事务管理等,使得它不仅可以作为缓存系统,还可以用于其他用途,如消息队列等。

Redis适用于各种规模的应用系统。

三、MemcachedMemcached是一个简单的高性能分布式内存对象缓存系统。

它使用键值对的方式存储数据,提供了多种API,支持分布式部署。

Memcached具有高速的读写性能和可扩展性,通常被用于缓存数据库查询结果、页面内容等。

它适用于大规模应用和高并发场景,但需要注意的是,Memcached不提供数据持久化功能。

四、HazelcastHazelcast是一个基于Java的开源分布式缓存框架,它提供了分布式数据结构和集群管理功能。

Hazelcast采用了集中式架构,能够实现多节点之间的数据共享和同步。

它具有简单易用的特点,并提供了多种数据结构和并发算法的支持。

Hazelcast适用于构建复杂的分布式应用系统。

五、CaffeineCaffeine是一个在Java中最受欢迎的缓存库之一,它提供了高性能、无锁的内存缓存解决方案。

Caffeine采用了分片策略来管理缓存对象,提供了各种缓存策略和配置选项,可以根据实际需求进行灵活配置。

SpringBoot整合EhCache的步骤详解

SpringBoot整合EhCache的步骤详解

SpringBoot整合EhCache的步骤详解本⽂讲解Spring Boot与EhCache的整合。

1 EhCache简介EhCache 是⼀个纯Java的进程内缓存框架,具有快速、精⼲等特点,是Hibernate中默认CacheProvider。

Ehcache是⼀种⼴泛使⽤的开源Java分布式缓存。

主要⾯向通⽤缓存,Java EE和轻量级容器。

它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,⼀个gzip缓存servlet过滤器,⽀持REST和SOAP api等特点。

2 Spring Boot整合EhCache步骤 2.1 创建项⽬,导⼊依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.yiidian</groupId><artifactId>ch03_10_springboot_ehcache</artifactId><version>1.0-SNAPSHOT</version><!-- 导⼊springboot⽗⼯程. 注意:任何的SpringBoot⼯程都必须有的 --><!-- ⽗⼯程的作⽤:锁定起步的依赖的版本号,并没有真正到依赖 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.11.RELEASE</version></parent><dependencies><!--web起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--springboot 集成 junit 起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.1.6.RELEASE</version><scope>test</scope></dependency><!-- 缓存坐标 --><!-- https:///artifact/org.springframework.boot/spring-boot-starter-cache --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId><version>2.1.11.RELEASE</version></dependency><!-- Ehcache⽀持 --><dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId><version>2.10.6</version></dependency></dependencies></project>2.2 配置ehcache.xml在resources⽬录下建⽴ehcache.xml,内容如下:<ehcache xmlns:xsi="/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"><diskStore path="java.io.tmpdir"/><!-- defaultCache:默认配置 --><defaultCachemaxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"maxElementsOnDisk="10000000"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"><persistence strategy="localTempSwap"/></defaultCache><!-- 缓存名称为customer的配置 --><cache name="customer"maxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"maxElementsOnDisk="10000000"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"><persistence strategy="localTempSwap"/></cache></ehcache>参数说明name 缓存名称maxElementsInMemory 缓存最⼤个数eternal 对象是否永久有效,⼀但设置了,timeout将不起作⽤timeToIdleSeconds 设置对象在失效前的允许闲置时间(单位:秒)。

ehcache基本原理

ehcache基本原理

ehcache基本原理Ehcache的类层次模型主要为三层,最上层的是CacheManager,他是操作Ehcache的⼊⼝。

我们可以通过CacheManag er.getInstance()获得⼀个单个的CacheManager,或者通过CacheManager的构造函数创建⼀个新的CacheManager。

每个Ca cheManager都管理着多个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 - 设置某个元素消亡前的停顿时间。

也就是在⼀个元素消亡之前,两次访问时间的最⼤时间间隔值。

这只能在元素不是永久驻留时有效(译注:如果对象永恒不灭,则设置该属性也⽆⽤)。

关于ehcache 磁盘缓存 默认路径的文章

关于ehcache 磁盘缓存 默认路径的文章

关于ehcache 磁盘缓存默认路径的文章ehcache是一个开源的Java缓存框架,它提供了内存缓存和磁盘缓存的功能。

在使用ehcache进行磁盘缓存时,默认路径是一个重要的配置项。

默认情况下,ehcache会将磁盘缓存存储在操作系统的临时目录中。

这个目录通常是由操作系统自动分配的,并且可能会在系统重启后被清空。

因此,如果我们希望持久化地保存磁盘缓存数据,就需要自定义默认路径。

为了修改默认路径,我们需要在ehcache的配置文件中进行相应的配置。

首先,我们需要找到ehcache.xml文件,这个文件通常位于项目的classpath下。

在该文件中,我们可以找到一个名为diskStore的配置项。

diskStore配置项用于指定磁盘缓存数据的存储路径。

默认情况下,它的值是\"java.io.tmpdir\",表示使用操作系统的临时目录作为默认路径。

如果我们希望修改默认路径,可以将diskStore配置项的值修改为我们期望的路径。

例如,假设我们希望将磁盘缓存数据保存在项目根目录下的一个名为\"cache\"的文件夹中。

那么我们可以将diskStore配置项修改如下:<diskStore path=\"cache\"/>这样一来,ehcache就会将磁盘缓存数据保存在项目根目录下的\"cache\"文件夹中。

需要注意的是,我们在修改默认路径时需要确保指定的路径是存在的,并且具有写入权限。

否则,ehcache将无法正常保存磁盘缓存数据。

除了在配置文件中进行配置外,我们还可以通过编程的方式来修改默认路径。

ehcache提供了一个名为DiskStorePathManager的类,通过该类可以动态地修改磁盘缓存数据的存储路径。

总之,ehcache提供了灵活的配置选项来修改磁盘缓存的默认路径。

通过合理地配置,默认路径可以被修改为我们期望的路径,从而实现对磁盘缓存数据的持久化保存。

ehcache缓存原理

ehcache缓存原理

ehcache缓存原理
Ehcache是一种基于Java的缓存框架,可以提供缓存服务,它的原理是将数据(对象)放入内存中存储,以提高系统的性能。

Ehcache 可以让应用程序更快地访问数据,而不必再从磁盘或数据库获取它。

Ehcache的核心是一种叫做“缓存”的技术,它将数据保存在快速访问的内存中,使其可以快速访问。

这种技术可以大大提高系统性能,并减少CPU和磁盘空间的使用率。

Ehcache使用一种叫做“淘汰”(eviction)的机制来管理它的缓存,也就是如果缓存中的数据量超过一定量,就会将相对不常访问的数据从缓存中移除掉。

这样可以节省很多内存,同时能够更快地访问缓存中的数据。

Ehcache还可以通过一种称为“缓存链接”(cache-chaining)的机制,来连接不同的缓存,以便在系统中存储更多的数据。

这样,当缓存中的数据超过一定量时,将自动向缓存链接中添加新的缓存,从而实现更好的数据存储空间。

Ehcache还支持持续性分区(persistent partitioning),这种技术可以将系统中的缓存数据分割成多个部分,每个部分存储的数据不会超过一定的大小,避免缓存溢出的现象。

另外,Ehcache还提供了一种称为“内存重用”(memory reclamation)的技术,目的是当系统中数据量变大时,可以释放系统中已经不再使用的缓存数据,以便用于存储新的数据。

总的来说,Ehcache的核心原理就是将系统中的数据存储在快速
访问的内存中,以提高系统的性能,同时也可以通过淘汰、缓存链接、持久性分区和内存重用等技术来管理Ehcache的缓存。

Ehcache的优势在于其可靠性高、支持多种数据格式以及用于整个系统的可扩展性。

EhCache缓存系统的使用

EhCache缓存系统的使用

EhCache缓存系统的使用在Web开发中,缓存系统的应用能极大提高系统的响应速度,其中在Java应用中EhCache是比较常用的一个缓存框架。

EhCache是一个纯Jvm进程内的缓存框架,具有快速轻量、配置简单、功能强大等特点,是Hibernate中的默认CacheProvider。

下图是EhCache 的基本架构:EhCache的基本模块提供了缓存的实现,包括缓存管理器、多种的缓存策略、缓存的存储及相关扩展和控制接口,Replication模块提供了多种的分布式缓存的实现,两个APIs接口模块并且提供了基于J2EE技术相关的API。

EhCache的使用EhCache的基本包是ehcache-core-$ver.jar,依赖包是SLF4J,可以通过代码配置也可以使用配置文件,基本的元素有:CacheManager,缓存管理器,管理一组缓存的实例;Cache,一个缓存的实例,是缓存存放的地方,实现缓存存取接口;Element,单条缓存的组成单位,有Key、Value两部分,这两部分需要实现Serializeable接口。

基本使用代码如下:CacheManager manager = CacheManager.newInstance("src/config/ehcache.xml");manager.addCache("testCache");Cache test = manager .getCache("testCache");test.put(new Element("key1", "value1"));Element result = test.get(“key1”);test.remove(“key1”);使用Spring框架的时候可以使用IOC简化CacheManager的获取:@Autowiredprivate Cache sysSymbolCache;配置文件的使用介绍:<ehcache xmlns:xsi="/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true"monitoring="autodetect"><diskStore path="atoscache" /><defaultCache maxElementsInMemory="100000" eternal="false"timeToIdleSeconds="300" timeToLiveSeconds="720000" overflowToDisk="true"memoryStoreEvictionPolicy="LRU" /><cache name="sysSymbolCache" maxElementsInMemory="200000"eternal="false" overflowToDisk="true" diskPersistent="true" timeToIdleSeconds="216000"timeToLiveSeconds="720000"memoryStoreEvictionPolicy="LFU"></cache></ehcache>diskStore代表存储的目录名,默认是java.io.tmpdir,defaultCache是默认的Cache配置。

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背景系统缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能. 缓存设想内存是有限的,缓存的时效性也是有限的,所以可以设定内存数量的大小,可以执行失效算法,可以在内存满了的时候,按照最少访问等算法将缓存直接移除或切换到硬盘上。

ehcache 磁盘缓存 默认路径

ehcache 磁盘缓存 默认路径

ehcache 磁盘缓存默认路径Ehcache是一个Java的开源缓存框架,可以帮助开发人员实现快速的内存缓存和磁盘缓存。

在使用Ehcache进行磁盘缓存时,默认路径是在操作系统的临时目录下。

以下是有关Ehcache磁盘缓存默认路径的更多详细信息。

Ehcache的磁盘缓存默认路径是根据操作系统的不同而有所不同。

对于Windows系统来说,默认路径是在`C:\Documents andSettings\<用户名>\Local Settings\Temp\ehcache`目录下。

对于Linux系统来说,默认路径是在`/tmp/ehcache`目录下。

这个默认路径可以在Ehcache的配置文件中进行自定义设置。

如果没有特殊需求,一般情况下可以使用默认路径。

Ehcache磁盘缓存的默认路径是在临时文件夹中的一个单独的子目录中。

该子目录的命名规则是`ehcache<版本号>`,其中`<版本号>`是Ehcache的版本号。

例如,如果使用的是Ehcache 3.x版本,那么默认路径的子目录名就是`ehcache3`。

在Ehcache的磁盘缓存默认路径下,会生成一些特定格式的文件来存储缓存的数据。

这些文件的命名规则是基于所使用的缓存区域的名称。

每个缓存区域都会生成一个对应的文件,该文件的文件名就是缓存区域的名称。

例如,如果有一个缓存区域的名称为`myCache`,那么对应的文件名就是`myCache.data`。

除了缓存数据文件,还可能生成一些其他数据文件,比如索引文件等。

Ehcache提供了非常丰富的配置选项,允许开发人员根据实际需求来自定义磁盘缓存的路径。

在Ehcache的配置文件中,可以使用以下配置属性来指定磁盘缓存的路径:```<diskStore path="path/to/cache/directory" />```其中,`path`属性的值就是磁盘缓存的路径。

ehcache原理

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 value类型

ehcache value类型

ehcache value类型一、什么是ehcache value类型?Ehcache是一个开源的Java缓存框架,可以在应用程序中实现高效的缓存管理。

Ehcache的value类型指的是缓存在Ehcache中存储的数据对象。

Ehcache支持多种数据类型的缓存,包括Java基本数据类型、自定义对象、集合等。

二、Java基本数据类型的缓存Ehcache可以直接缓存Java的基本数据类型,例如整型、浮点型、布尔型等。

缓存这些数据类型可以有效地提高应用程序的性能,避免频繁的计算和查询操作。

例如,在一个商品清单的应用中,可以缓存每个商品的价格、库存等基本数据类型,以减少对数据库的访问。

三、自定义对象的缓存Ehcache可以缓存自定义的Java对象,通过实现Serializable接口来实现对象的序列化和反序列化。

自定义对象可以包含多个属性,例如用户信息、订单信息等。

在缓存中存储自定义对象可以减少对数据库的查询次数,提高应用程序的性能。

同时,Ehcache还提供了强大的配置选项,可以设置对象的生命周期、失效时间等。

四、集合的缓存Ehcache还支持对Java集合对象的缓存,包括List、Set、Map等。

集合对象在应用程序中常用于存储和管理多个数据元素。

通过将集合对象缓存到Ehcache中,可以避免重复的查询和计算操作,提高应用程序的效率。

例如,在一个新闻列表的应用中,可以将每页的新闻数据缓存到Ehcache 中,减少对数据库的访问。

五、如何选择适合的value类型?在选择Ehcache的value类型时,需要考虑以下几个方面:1. 数据类型:根据实际需求选择合适的数据类型。

如果只需缓存基本数据类型,可以选择直接缓存基本数据类型。

如果需要缓存的是自定义对象或集合对象,需要实现Serializable接口。

2. 数据规模:根据数据规模选择适当的数据结构。

如果数据规模较小,可以选择使用Java基本数据类型进行存储。

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 的使用场景
ehcache 是一个广泛使用的开源 Java 分布式缓存,它提供了
一个高效的缓存解决方案,可以大大提高应用程序的性能和扩展性。

ehcache 的使用场景非常广泛,下面将介绍一些常见的使用场景。

1. 数据库查询结果缓存。

在许多应用程序中,数据库查询是性能瓶颈之一。

通过使用ehcache,可以将数据库查询结果缓存在内存中,避免重复的数据库
访问,从而大大提高应用程序的性能。

2. 对象缓存。

在某些情况下,应用程序需要频繁地创建和销毁对象,这会导
致内存的频繁分配和回收,影响应用程序的性能。

通过使用ehcache,可以将经常使用的对象缓存在内存中,减少对象的创建和
销毁次数,提高应用程序的性能。

3. 分布式缓存。

在分布式系统中,数据的一致性和性能是非常重要的。

ehcache 提供了分布式缓存的解决方案,可以将缓存数据分布在多个节点上,从而提高系统的性能和可扩展性。

4. 页面缓存。

对于 Web 应用程序,页面的渲染是一个非常耗时的过程。

通过
使用 ehcache,可以将页面的渲染结果缓存在内存中,减少页面的
渲染次数,提高 Web 应用程序的性能。

总的来说,ehcache 的使用场景非常广泛,可以应用于各种类
型的应用程序中,从而提高应用程序的性能和可扩展性。

希望以上
介绍的使用场景可以帮助您更好地理解 ehcache 的应用价值。

ehcache 缓存参数

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 还提供了堆外缓存的支持。

ehcache3 持久化规则

ehcache3 持久化规则

ehcache3 持久化规则ehcache3是一个流行的Java缓存框架,它提供了一种将数据存储在内存中的方式,以加快应用程序的性能。

然而,由于内存有限,数据在应用程序重启后将丢失。

为了解决这个问题,ehcache3提供了持久化功能,允许将缓存数据存储到磁盘上,以便在应用程序重启后能够恢复数据。

使用ehcache3的持久化功能非常简单。

首先,需要配置一个持久化存储区,这可以是文件系统、数据库或其他支持的存储方式。

然后,将持久化存储区配置到ehcache3的配置文件中。

一旦配置完成,ehcache3将自动将缓存数据写入持久化存储区,并在应用程序重启后将数据读取回来。

ehcache3的持久化规则非常灵活,可以根据应用程序的需求进行定制。

例如,可以配置缓存数据的写入频率,以避免频繁地写入磁盘。

同时,也可以配置缓存数据的过期时间,以确保缓存数据不会在磁盘上存储过久。

使用ehcache3的持久化功能可以带来许多好处。

首先,它可以提高应用程序的可靠性,因为即使应用程序重启,缓存数据也不会丢失。

其次,它可以提高应用程序的性能,因为从磁盘读取数据比从数据库或其他远程存储读取数据更快。

最后,它还可以减轻数据库的负载,因为一部分数据可以从缓存中读取,而不是从数据库中读取。

ehcache3的持久化功能是一个强大而灵活的工具,可以帮助开发人员提高应用程序的性能和可靠性。

通过合理配置持久化规则,开发人员可以根据应用程序的需求来决定缓存数据的存储方式和读写频率,从而实现最佳的性能和可靠性的平衡。

无论是开发大型企业应用还是小型个人项目,ehcache3的持久化功能都是一个值得考虑的选择。

Java中的缓存框架有哪些

Java中的缓存框架有哪些

Java中的缓存框架有哪些缓存是在计算机系统中常用的一种技术,用于提高系统的性能和响应速度。

在Java开发中,也有许多成熟的缓存框架可供选择和使用。

下面将介绍一些常见的Java缓存框架。

一、EhcacheEhcache是一个广泛使用的Java缓存框架,它提供了丰富的功能和配置选项。

Ehcache支持内存缓存、磁盘缓存和分布式缓存等多种缓存方式,使用简单方便,适用于各种规模的项目。

二、Guava CacheGuava Cache是Google Guava项目中提供的缓存框架,它是一个简单、快速和高效的缓存工具。

Guava Cache支持LRU(最近最少使用)和LFU(最不常用)等缓存策略,可以根据实际需求进行配置和使用。

三、CaffeineCaffeine是一个为Java 8+提供高性能缓存的开源框架。

它在吞吐量、响应时间和内存占用方面都表现出色。

Caffeine支持各种缓存策略,并提供了一套丰富的API和配置选项,可以满足各种复杂的缓存需求。

四、RedisRedis是一种高性能的键值存储数据库,同时也可以用作缓存框架。

Redis支持持久化和集群等特性,可以将缓存数据存储在内存中,提供快速的读写访问能力。

Redis还支持多种数据结构和缓存策略,可以根据具体需求进行配置。

五、CouchbaseCouchbase是一个面向企业级应用的多模型缓存系统,它结合了内存缓存和磁盘持久化,提供了高可用性和可扩展性。

Couchbase支持NoSQL的文档和键值存储模型,适用于各种规模的应用。

六、HazelcastHazelcast是一个开源的分布式缓存框架,提供了内存数据网格和分布式计算的功能。

Hazelcast可以将缓存数据存储在分布式的集群中,实现高可用性和高性能。

它支持多种缓存策略和数据结构,并提供了强大的分布式查询功能。

七、MemcachedMemcached是一个常用的分布式内存缓存系统,被广泛应用于互联网企业中。

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

EHCache介绍
简介
系统缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能. 缓存设想内存是有限的,缓存的时效性也是有限的,所以可以设定内存数量的大小,可以执行失效算法,可以在内存满了的时候,按照最少访问等算法将缓存直接移除或切换到硬盘上。

Ehcache从Hibernate发展而来,逐渐涵盖了Cahce界的全部功能,是目前发展势头最好的一个项目。

具有快速,简单,低消耗,依赖性小,扩展性强,支持对象或序列化缓存,支持缓存或元素的失效,提供LRU、LFU 和FIFO缓存策略,支持内存缓存和磁盘缓存,分布式缓存机制等等特点。

2009年8月Terracotta公司并购了开源缓存项目Ehcache, Terracotta 公司的产品 Terracotta 是一个 JVM 级的开源群集框架,提供 HTTP Session 复制、散布式缓存、POJO 群集、跨越集群的JVM 来完成散布式使用顺序协调。

并购后EhCache 首要的改进都集中在跟Terracotta 框架的集成上,这是一个真实意义上的企业级缓存处置方案。

Ehcache1.7版本上首次加入了ehcache-terracotta组件模块,想利用terracotta来实现更方便的集群操作。

Overview
Ehcache是一个开源的,用于提高访问性能的标准高速缓存,它抛弃了数据库同时易于扩展。

Ehcache拥用强大的,可靠和完整的功能,这已成为最广泛使用的基于Java的高速缓存。

Ehcache可以实现TB级的高速缓存管理,可配置多个缓存节点。

对于需要互联的分布式缓存应用,Ehcache的使用开源的Terracotta Sever的阵列。

Ehcache是Terracotta公司的一个长期开发、维护和支持的专业开源项目。

有效基于Apache 2 license。

除了开源的ehcache,Terracotta公司还提供企业版的Ehcache全天候的专业支持,咨询和培训。

Architecture
下图是系统的架框图和主要的API。

特点
高效且轻量级
快速
多年来,各种性能测试表明ehcache是java缓存中最快之一。

Ehcache的线程机制专门为大型、高并发的系统设计。

同时,大量测试表明ehcache各测试版和发行版都保持着高性能。

简单
很多用户都很难知道自己正在使用着ehcache,因为设置合理的默认值后无需初始配置。

API非常简单易于使用,你可能只需要几分钟就可以让他运行起来。

低消耗
他是一个只有几百KB的package。

依赖性小
核心使用的唯一的依赖是JCACHE的API
扩展性
为提供扩展到千兆字节,提供内存和磁盘存储。

可扩展到数百个缓存
适合多核CPU服务器上的高并发负载
每个虚拟机可创建多个CacheManager
灵活性
支持对象或序列化缓存
自Ehcache1.2后, 除序列化API外, 提供了对象API。

非序列化的
对象可以使用Ehcache中除DiskStore(磁盘存储)和复制之外的
所有部分。

如果尝试去存储或复制对象,一个警告级别的日
志消息会发出。

除了元素返回的方法(获取缓存元素,可理解
为数据)不同外,对象和序列化的API是一致的。

序列化和对
象API的唯一区别是对象元素上的两个新方法:
getObjectValue 和getKeyValue。

这使得初始使用对象缓存,
然后切换到序列化上变得相当容易。

也有很多的Java类未序
列化。

支持缓存范围或基于元素的过期策略
每个缓存的在线时间(在线意为处于活动状态,可提供缓存服务)
和下线时间(下线意为不可提供服务的状态)是可以设置的。


外,自Ehcache1.2.1后, 可以设置每个元素的时间配置来覆盖缓存中的配置。

提供LRU、LFU和FIFO缓存策略
支持内存缓存和磁盘缓存
支持动态,运行时的缓存配置
基于标准
完全实现JSR107 JCACHE API
Ehcache提供了至今为止的JSR107 JCACHE 标准的最完整实现。

因为JCACHE还没有发布JCACHE API,Ehcache发布net.sf.jsr107cache,并提供实现。

扩展性
可插入监听器
Ehcache 1.2提供CacheManagerEventListener和CacheEventListener 接口。

实现接口可以实现ehcache.xml中对插入的配置。

插件式查询、克隆和监测
插件式缓存扩展
插件式缓存异常处理
持久化应用
持久化磁盘存储JVM重启期数据。

2004年Ehcache 1,第一个开源版本中,引入了将程序关闭后缓存数据持久化存储的功能。

VM重启时,持久化存储到存储数据的磁盘, 当应用启动时,缓存数据可以使用。

需要时Flush到磁盘(通过调用cache.flush()方法)
支持监听
CacheManager监听
通过CacheManagerEventListener接口注册CacheManager 监听器,实现如下事件方法:
notifyCacheAdded() 缓存被添加时监听器会得到通知notifyCacheRemoved() 缓存被移除时监听器会得到通知缓存事件监听
通过CacheEventListener 接口注册缓存事件监听器, 此接口提供很多缓存事件处理后的事件通知:
notifyElementRemoved 元素被移除时监听器会得到通知notifyElementPut 元素被添加时监听器会得到通知notifyElementUpdated 元素被更新时监听器会得到通知notifyElementExpired 元素被过期时监听器会得到通知
JMX支持
支持JMX(Java Management Extensions)。

你可以监视和管理以下的MBean:
CacheManagCacheManager
CacheCache
CacheConfigurationCacheConfiguration CacheStatistCacheStatistics
分布式缓存
自Ehcache1.2后,全面支持高性能、灵活、可扩展的分布式缓存。

分布式缓存包含的选项:
通过Terracotta使用集群缓存:在Ehcache中安装和使用
Terracotta 只需要两行必须的配置. 缓存发现是自动的,为调整
缓存行为和性能提供很多选项。

通过RMI, JGroups, 或JMS复制缓存: 通过多点传送(MultiCast)
或手动配置实现缓存发现。

更新通过习惯的同步或异步RMI
连接。

自定义: 为自定义发现和复制实现提供了插件机制。

使用Terracotta 提供集群缓存
简单然而强大的集群缓存,只需要提供两行必须的配置。

通过RMI, JGroups或JMS复制缓存
无需编程便可使用复制。

只需要在ehcache.xml中配置, 可用
的复制选项:
Ehcache 1.6+ 支持通过RMI, JGroups, 和 JMS复制
适当时候对于每个缓存异步或同步的复制.
适当时候对于每个缓存复制或使其无效.
可靠投递
内建的投递机制使用TCP连接之上的RMI,不是UDP(广播,不
可靠)。

同伴发现
同伴发现可以是手动配置也可以是使用多点传送(MultiCast)
自动发现。

多点传送简单,添加和移除同伴都是自动化的。

手动配置提供更好的控制,它在多点传送被阻塞时使用。

可扩展
为自定义发现和复制实现提供了插件机制。

自力更生
分布式缓存在不同的时间进入和离开集群。

当缓存第一次初始化时,可以被配置成在集群中自管自己。

一个BootstrapCacheLoader 接口的实现类BootstrapCacheLoaderFactory(抽象工厂)提供基于RMI的默认实现。

Distributed caches enter and leave the cluster at different times.
缓存服务器
RESTful缓存服务
SOAP缓存服务
作为一个WAR(Web Archive file网络应用程序文件) 或完全缓存服务器
Java EE高速缓存
高速缓存拦截机制避免并发操作的重复处理
为耗时操作提供自我缓存
Java EE Gzip Servlet过滤
指令集缓存
兼容Hibernate
高品质
高覆盖率测试
自动化负载、边界、性能系统测试
产品级测试
完整的文档
Popular框架组织信赖
向下兼容
公开所以历史Bug信息
支持重大Bug及时响应
开放源码证书
Apache2.0许可证。

相关文档
最新文档