一、EhCache简介

        Spring 从 3.1 开始引入对 Cache 的支持,并支持使用JCache(JSR-107)注解简化开发。Cache 接口下 Spring 提供了各种 xxxCache 的实现,其中就包括了EhCache。

        EhCache 是一个纯 Java 的进程内缓存框架,是 Hibernate 中默认的 CacheProvider,同Redis一样,EhCache 不是纯内存缓存,它支持基于内存和磁盘的二级缓存,本文所使用的EhCache3还增加了堆外缓存的支持,同时 EhCache 还原生支持集群能力。

        本文只介绍 EhCache 的使用,就不过多赘述理论了,EhCache 功能十分强大,且简单易上手,一小时不到即可集成到项目中。

二、集成方法

1. 引入依赖

说明:JCache是Java规范中定义的一套缓存API,我们这里需要使用JCache中提供的API,所以要加上JCache的依赖。

org.springframework.boot

spring-boot-starter-cache

javax.cache

cache-api

org.ehcache

ehcache

3.10.8

2. 添加配置文件

2.1 配置application.yml

        指定缓存类型及配置文件位置。

spring:

cache:

type: jcache

jcache:

config: classpath:ehcache.xml

2.2 配置XML文件

        将XML文件放在与application.yml同级的resource目录下即可;配置完成后启动服务,如果无报错说明操作正确。

        关于XML文件如何配置:常用的基本功能如下代码段,如有扩展需求的请前往官网查找。

xmlns = "http://www.ehcache.org/v3"

xsi:schemaLocation = "http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd">

5

100

50

10

5

1

三、实际应用

1. 功能介绍

        表内存储一定量的数据,一段时间内用户调用分页查询接口,当查询条件不变时,返回缓存中数据而不是重新查询数据库;以下是一个简单的demo。

2. 具体实现

2.1 Controller层

        传入视频名称及分页条件,返回所有相同名称的视频分页。

@Autowired

private VideoService videoService;

@RequestMapping(value = "/selectChildVideo", method = RequestMethod.GET)

public IPage

@RequestParam(value = "name") String name,

Integer pageNum, Integer pageSize) {

return videoService.selectChildVideo(name, pageNum, pageSize);

}

2.2 ServiceImpl层

        使用@Cachable注解提示该方法使用缓存,缓存配置使用"CacheConfig3",缓存键为"'ChildVideo' + #name + #pageNum + #pageSize"(此处为SpEL表达式,值为传入参数的实际值);

@Autowired

private VideoMapper videoMapper;

@Override

@Cacheable(value = "CacheConfig3",

key = "'ChildVideo' + #name + #pageNum + #pageSize")

public IPage

return videoMapper.selectPage(

new Page<>(pageNum, pageSize),

new LambdaQueryWrapper

}

@Cachable常用注解

value指定使用的缓存配置;key指定缓存的键,当命中缓存中同名键后程序便不会进入方法体中;keyGeneratorkey生成器,与key属性互斥,选用其一即可;cacheManager指定缓存管理器;condition指定缓存条件,优先级大于unless,只有满足条件才缓存;unless当unless指定的条件为false才缓存;sync是否异步缓存。

引用:一文详细介绍Ehcache - 知乎 (zhihu.com)

JAVA中使用最广泛的本地缓存?Ehcache的自信从何而来 —— 感受来自Ehcache的强大实力 - 知乎 (zhihu.com)

SpringBoot 缓存之 @Cacheable 详细介绍-CSDN博客

SpringBoot2.7.X集成Ehcache3缓存,编码配置和XML配置-CSDN博客

相关文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。