ehcache使用

另一种缓存,Spring Boot 整合 Ehcache

不羁岁月 提交于 2020-01-15 02:30:53
用惯了 Redis ,很多人已经忘记了还有另一个缓存方案 Ehcache ,是的,在 Redis 一统江湖的时代,Ehcache 渐渐有点没落了,不过,我们还是有必要了解下 Ehcache ,在有的场景下,我们还是会用到 Ehcache。 今天松哥就来和大家聊聊 Spring Boot 中使用 Ehcache 的情况。相信看完本文,大家对于[ Spring Boot 操作 Redis,三种方案全解析! ]一文中的第二种方案会有更加深刻的理解。 Ehcache 也是 Java 领域比较优秀的缓存方案之一,Ehcache 这个缓存的名字很有意思,正着念反着念,都是 Ehcache,Spring Boot 中对此也提供了很好的支持,这个支持主要是通过 Spring Cache 来实现的。 Spring Cache 可以整合 Redis,当然也可以整合 Ehcache,两种缓存方案的整合还是比较相似,主要是配置的差异,具体的用法是一模一样的,就类似于 JDBC 和 数据库驱动的关系一样。前面配置完成后,后面具体使用的 API 都是一样的。 和 Spring Cache + Redis 相比,Spring Cache + Ehcache 主要是配置有所差异,具体的用法是一模一样的。我们来看下使用步骤。 项目创建 首先,来创建一个 Spring Boot 项目,引入 Cache 依赖:

spring boot 整合ehcache

与世无争的帅哥 提交于 2020-01-15 02:25:41
EHCache是来自sourceforge( http://ehcache.sourceforge.net/ ) 的开源项目,也是纯Java实现的简单、快速的Cache组件。 EHCache支持内存和磁盘的缓存,支持LRU、LFU和FIFO多种淘汰算法,支持分 布式的Cache,可以作为Hibernate的缓存插件。同时它也能提供基于Filter的Cache,该Filter可以缓存响应的内容并采用 Gzip压缩提高响应速度。 1、添加pom依赖 例: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> <version>${spring-boot.version}</version> </dependency> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>${ehcache.version}</version> </dependency> 2、添加配置文件ehcache.xml (1)配置文件默认读取classpath*:ehcache.xml或classpath*:config

Spring使用Cache、整合Ehcache

白昼怎懂夜的黑 提交于 2020-01-06 05:46:02
从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们缓存的方法对于相同的方法参数要有相同的返回结果。 使用Spring Cache需要我们做两方面的事: n 声明某些方法使用缓存 n 配置Spring对Cache的支持 和Spring对事务管理的支持一样,Spring对Cache的支持也有基于注解和基于XML配置两种方式。下面我们先来看看基于注解的方式。 1 基于注解的支持 Spring为我们提供了几个注解来支持Spring Cache。其核心主要是@Cacheable和@CacheEvict。使用@Cacheable标记的方法在执行后Spring Cache将缓存其返回结果,而使用@CacheEvict标记的方法会在方法执行前或者执行后移除Spring Cache中的某些元素。下面我们将来详细介绍一下Spring基于注解对Cache的支持所提供的几个注解。 1.1 @Cacheable @Cacheable可以标记在一个方法上,也可以标记在一个类上

EHCache学习笔记1

别说谁变了你拦得住时间么 提交于 2019-12-26 17:19:50
介绍: EHCache 是一个快速的、轻量级的、易于使用的、进程内的缓存。它支持 read-only 和 read/write 缓存,内存和磁盘缓存。是一个非常轻量级的缓存实现,而且从 1.2 之后就支持了集群。 配置: EHCache 的配置非常灵活,可以在声明里配置,也可以在 xml 、程序中、构造函数中配置。下面在程序中动态的改变 Cache 的配置,如下: Cache cache = manager . getCache ( "sampleCache" ); CacheConfiguration config = cache . getCacheConfiguration (); config . setTimeToIdleSeconds ( 60 ); config . setTimeToLiveSeconds ( 120 ); config . setmaxEntriesLocalHeap ( 10000 ); config . setmaxEntriesLocalDisk ( 1000000 ); 当然也可以冻结动态的 Cache 的配置,如下: Cache cache = manager.getCache("sampleCache");cache.disableDynamicFeatures(); 在 xml 中将 <ehcache> 元素的属性

Ehcache CacheManager

╄→гoц情女王★ 提交于 2019-12-26 17:19:18
CacheManager是Ehcache框架的核心类和入口,它负责管理一个或多个Cache对象。要使用Ehcache框架,必须要先创建 CacheManager 对象。现在我们学习下,如何创建 CacheManager 对象。 1.使用默认配置文件创建单例对象 CacheManager提供了很多无参的static创建方法,我们可以获取唯一的实例,代码如下: public static void main(String[] args) { CacheManager mgr1 = CacheManager.getInstance(); CacheManager mgr2 = CacheManager.create(); CacheManager mgr3 = CacheManager.newInstance(); System.out.println(mgr1 == mgr2);// true System.out.println(mgr1 == mgr3);// true } 这3种方式都是等价,获取的唯一实例也是相同的。通过源代码可以很容易的发现,这3个函数就是互相调用的关系。使用这种方式,Ehcahce会报警告,因为我们没有提供自定义的cache配置文件: 警告: No configuration found. Configuring ehcache from ehcache

Java的进程内缓存框架:EhCache

别说谁变了你拦得住时间么 提交于 2019-12-26 17:19:03
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。 Ehcache缓存的特点: 1. 快速. 2. 简单. 3. 多种缓存策略 4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题 5. 缓存数据会在虚拟机重启的过程中写入磁盘 6. 可以通过RMI、可插入API等方式进行分布式缓存 7. 具有缓存和缓存管理器的侦听接口 8. 支持多缓存管理器实例,以及一个实例的多个缓存区域 9. 提供Hibernate的缓存实现 Ehcache缓存的使用(1) – 安装ehcache Ehcache 的特点,是一个纯Java ,过程中(也可以理解成插入式)缓存实现,单独安装Ehcache ,需把ehcache-X.X.jar 和相关类库方到classpath中。如项目已安装了Hibernate ,则不需要做什么,直接可以使用Ehcache 。 Ehcache缓存的使用(2) - 生成CacheManager 使用CacheManager 创建并管理Cache 1.创建CacheManager有4种方式: A:使用默认配置文件创建 Java代码 1.CacheManager manager = CacheManager.create(); B:使用指定配置文件创建 Java代码 1.CacheManager

Spring+SpringMVC+MyBatis深入学习及搭建(八)——MyBatis查询缓存

假如想象 提交于 2019-12-23 12:51:50
1.什么是查询缓存 mybatis提供查询缓存,用于减轻数据库压力,提高数据库性能。 mybatis提供一级缓存和二级缓存。 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。 二级缓存是mapper级别的缓存,多个sqlSession去操作同一个Mapper的sql语句,多个sqlSession可以共用二级缓存,二级缓存是跨sqlSession的。 为什么要用缓存? 如果缓存中有数据就不用从数据库中获取,大大提高系统性能。 2.一级缓存 2.1一级缓存工作原理 第一次发起查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,如果没有,从数据库查询用户信息。 得到用户信息,将用户信息存储到一级缓存中。 如果sqlSession去执行commit操作(执行插入、更新、删除),清空sqlSession中的一级缓存,这样做的目的为了让缓存中存储的是最新的信息,避免脏读。 第二次发去查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,缓存中有,直接从缓存中获取用户信息。 2.2一级缓存测试 mybatis默认支持一级缓存,不需要在配置文件去配置。 按照上边一级缓存原理步骤去测试。 @Test

分布式Ehcache Terracotta使用

随声附和 提交于 2019-12-22 13:49:49
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 分布式Ehcache集群间数据同步 EhCache 是进程中的缓存系统,一旦将应用部署在集群环境中,每一个节点维护各自的缓存数据,当某个节点对缓存数据进行更新,这些更新的数据无法在其它节点中共享, 这不仅会降低节点运行的效率,而且会导致数据不同步的情况发生。使用Terracotta Server可以实现Ehcache的集群. 而针对集群之间数据同步的问题, Terracotta提供了WAN replication的方案. 使用时只需要在Ehcache配置文件配置即可, 然后系统会自动在不同集群之间同步数据. 主要特性: 消息缓冲 解决冲突 失效恢复 使用ActiveMQ,支持topic,queue 异步通信等等 数据同步的范围: put remove removeAll 应用场景一 不同集群使用同一个Active Terracotta Server Array,然后保证Passive Terracotta Server Array的数据同步. 这种方式对集群之间的网络要求较高. 使用场景二 不同的集群拥有独自的TSA, 但同步自身TSA的同时,还需要同步其它集群的TSA. 这种方式线路适合写操作比较少的应用. 使用场景三 自定义一个replicator,从本地集群中提取更新的数据,以消息的形式发送到其它结点上.

API前置系统开发流程:8.运用EhCache缓存,实现验证码验证

寵の児 提交于 2019-12-20 12:29:28
首先选用EhCache的原因是,他的体量小,引用jar包即可使用,相比于redis来讲使用方便,不需要专门起服务。而我要实现的功能很简单,只是将生成的验证码存储于缓存,五分钟后便将缓存清理,所以对服务器内存的占用并不大。如果是大体量的缓存服务,建议使用redis等缓存技术。 1.maven引入ehcache的jar包 <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency> 2.设置配置 在resource下面新建文件夹ehcacheconfig,并在文件夹中添加ehcache-config.xml文件。 <?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"> <!-- 磁盘缓存位置 --> <diskStore path="java.io.tmpdir/ehcache"/> <!-- 默认缓存 --> <defaultCache maxEntriesLocalHeap="10000

flowable 图片缓存

二次信任 提交于 2019-12-15 03:18:33
背景 由于我们的每次显示图片的话,都将需要大量的查询和相关的流。这样对我们的系统压力极大,用户体验极差。 所以使用了缓存把图片流缓存起来,这样就可以解决问题了。 实现 这里我用的是ehcache,由于他小巧依赖少。 1.把我们的包导入进来 <!--开启 cache 缓存--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <!-- ehcache 缓存 --> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency> 2.配置xml文件 <?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false"> <diskStore path="/data/flow