一、说明

1、maven项目

2、SpringBoot项目

二、解决方案

1、引入依赖

<!--ehcache-->
<dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId><version>2.8.3</version>
</dependency>

2、增加配置文件

1)位于resources根目录

2)示例图

3)ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache name="cache" updateCheck="false"><!-- 磁盘缓存位置 --><diskStore path="java.io.tmpdir"/><defaultCache eternal="false" maxElementsInMemory="1000"overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="3600"timeToLiveSeconds="3600" memoryStoreEvictionPolicy="LRU" /><!-- 手动指定的缓存策略 --><!-- 对不同的数据,缓存策略可以在这里配置多种 --><!--sys-ku,库管理--><!--diskStore path:用来配置磁盘缓存使用的物理路径name:   缓存名称,cache的唯一标识(ehcache会把这个cache放到HashMap里)eternal="false"   元素是否永恒,如果是就永不过期(必须设置)maxElementsOnDisk====磁盘缓存中最多可以存放的元素数量,0表示无穷大maxElementsInMemory="1000" 内存缓存中最多可以存放的元素数量(必须设置)timeToIdleSeconds="0"   导致元素过期的访问间隔(秒为单位). 0表示可以永远空闲,默认为0timeToLiveSeconds="600" 元素在缓存里存在的时间(秒为单位). 0 表示永远存在不过期overflowToDisk="false"  当缓存达到maxElementsInMemory值是,是否允许溢出到磁盘(必须设置)diskPersistent="false"  磁盘缓存在VM重新启动时是否保持(默认为false)diskExpiryThreadIntervalSeconds="100" 磁盘失效线程运行时间间隔,默认是120秒memoryStoreEvictionPolicy="LFU" 内存存储与释放策略.当达到maxElementsInMemory时共有三种策略,分别为LRU(最近最少使用)、LFU(最常用的)、FIFO(先进先出)默认使用"最近使用"策略--><cachename="sys"eternal="false"maxElementsInMemory="1000"overflowToDisk="false"diskPersistent="false"timeToIdleSeconds="300"timeToLiveSeconds="0"memoryStoreEvictionPolicy="LRU" /></ehcache>

3、增加配置类

package hg.demo.spring.boot.web.ehcache;import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;@Configuration
@EnableCaching
public class EhCacheConfig {@Beanpublic EhCacheManagerFactoryBean cacheManagerFactoryBean(){EhCacheManagerFactoryBean bean = new EhCacheManagerFactoryBean();bean.setConfigLocation(new ClassPathResource("ehcache.xml"));bean.setShared(true);return bean;}@Beanpublic EhCacheCacheManager ehCacheCacheManager(EhCacheManagerFactoryBean bean){return new EhCacheCacheManager(bean.getObject());}
}

4、封装工具类

package hg.demo.spring.boot.web.ehcache;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.stereotype.Component;/*** @author hgSuper* @date 2021-10-14*/
@Slf4j
@Component("ehCacheUtils")
public class EhCacheUtils {@AutowiredEhCacheCacheManager ehCacheCacheManager;/*** 设值* @param cacheName 策略名* @param key* @param val json*/public void set(String cacheName, String key, String val) {log.info("set(),ehcache-设值,cacheName:{}", cacheName);log.info("set(),ehcache-设值,key:{}", key);log.info("set(),ehcache-设值,val:{}", val);ehCacheCacheManager.getCache(cacheName).put(key, val);}/*** 查询* @param cacheName* @param key* @return*/public String get(String cacheName, String key) {log.info("get(),ehcache-查询,cacheName:{}", cacheName);log.info("get(),ehcache-查询,key:{}", key);String val = ehCacheCacheManager.getCache(cacheName).get(key, String.class);log.info("get(),ehcache-查询,val:{}", val);return val;}/*** 删除* @param cacheName* @param key*/public void remove(String cacheName, String key) {log.info("remove(),ehcache-删除,cacheName:{}", cacheName);log.info("remove(),ehcache-删除,key:{}", key);ehCacheCacheManager.getCache(cacheName).evict(key);}/*** 清空* @param cacheName*/public void clear(String cacheName) {log.info("remove(),ehcache-清空,cacheName:{}", cacheName);ehCacheCacheManager.getCache(cacheName).clear();}
}

5、注解方式

1)@Cacheable

作用:在查询时,会先从缓存中获取,若不存在才再发起对数据库的访问。

@Cacheable(value="策略名,配置在ehcache.xml",key="'key_'+#id")

说明1: key,不支持枚举,支持静态常量

说明2: #id,即入参变量名,类型可以是对象,调用 【"#id" -> "#bean.name"】

2)@CacheEvict

作用:通常用在删除方法,用来从缓存中移除相应数据

@CacheEvict(value = "策略名,配置在ehcache.xml", key = "")

3)@CachePut

作用:用于数据新增和修改操作上,用于更新缓存。

@CachePut(value = "策略名,配置在ehcache.xml", key = "")

【Java】ehcache | EhCache | 集成缓存EhCache相关推荐

  1. springboot+mybatis集成自定义缓存ehcache用法笔记

    今天小编给大家整理了springboot+mybatis集成自定义缓存ehcache用法笔记,希望对大家能有所办帮助! 一.ehcache介绍 EhCache 是一个纯Java的进程内缓存管理框架,属 ...

  2. SpringBoot集成Cache缓存(Ehcache缓存框架,注解方式)

    1.说明 Spring定义了CacheManager和Cache接口, 用来统一不同的缓存技术, 例如JCache,EhCache,Hazelcast,Guava,Redis等. 本文通过Spring ...

  3. 【EhCache: 一款Java的进程内缓存框架】EhCache 是什么、代码实战、版本3的改进

    文章目录 1 EhCache 是什么 2 EhCache 版本2 代码实战 Demo pom.xml TestEH.java ehcache.xml 3 EhCache 版本3 代码实战 Demo p ...

  4. java ehcahce刷新_Spring整合ehcache 注解实现查询缓存,并实现实时缓存更新或删除...

    写在前面:上一篇博客写了spring cache和ehcache的基本介绍,个人建议先把这些最基本的知识了解了才能对今天主题有所感触.不多说了,开干! 注:引入jar net.sf.ehcache e ...

  5. java 项目做多级缓存_【开源项目系列】如何基于 Spring Cache 实现多级缓存(同时整合本地缓存 Ehcache 和分布式缓存 Redis)...

    一.缓存 当系统的并发量上来了,如果我们频繁地去访问数据库,那么会使数据库的压力不断增大,在高峰时甚至可以出现数据库崩溃的现象.所以一般我们会使用缓存来解决这个数据库并发访问问题,用户访问进来,会先从 ...

  6. 集成Ehcache用来缓存表以后,怎么设置缓存刷新时间

    问答 集成Ehcache用来缓存表以后,怎么设置缓存刷新时间 发布于 217天前  作者 老司机  93 次浏览  复制  上一个帖子  下一个帖子  标签: 无 集成Ehcache用来缓存表以后,怎 ...

  7. EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是hibernate中默认的CacheProvider Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通

    EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是hibernate中默认的CacheProvider Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存, ...

  8. Java的进程内缓存框架:EhCache (转)

    EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache缓存的特点: 1. 快速. 2. 简单. 3. 多种缓存 ...

  9. (12) Hibernate+EhCache配置二级缓存

    转载地址 http://jyao.iteye.com/blog/1315726 (有关EhCache的基础介绍可参见:http://sjsky.iteye.com/blog/1288257 ) 本文主 ...

最新文章

  1. Linux下设置进程使用指定核的CPU
  2. 软件测试基础 - 测试覆盖率
  3. Java剖析工具JProfiler入门使用教程:离线剖析和触发器
  4. Spring对象绑定与类型转换
  5. excel快速填充_F4键,Excel中最强大的快捷键,没有之一
  6. newgrp - 登录到新的用户组中
  7. centos7 安装postgresql10
  8. 【hdu2588】求[1-n]中和n的gcd大于m的数的个数(求欧拉函数值)
  9. 健康档案管理系统方案/案列/APP/软件/小程序
  10. TimesTen索引的概念与日常操作
  11. 商务部关于促进电子商务规范发展的意见
  12. Python对Excel的常规操作 之 读取带密码的文件,解除Sheet密码
  13. JQ拖曳事件mouseup失效的解决办法
  14. 活性氧Propiconazole-d3 (nitrate),CAS No. 2699607-26-4
  15. 2.2 Collections类 (Collections源码解析)
  16. 若依源码分析(6)——部门管理
  17. 在多个项目聚合时,指定packing为pom
  18. 【Python学习教程】Python编程环境搭建
  19. 老师,强奸你时别叫痛(转载)
  20. 中华会计网吉安培训中心

热门文章

  1. 抖音搜索的推荐下拉词置顶如何做
  2. 抖音搜索下拉框优化原理和优势分析,抖音SEO,抖音搜索排名优化
  3. 总结:使用-idea-插件
  4. 【无标题】简化繁隐私协议
  5. 体面的辞职信(搞笑版)
  6. A股市场的市场分类(股票市场简介及历史)
  7. 详解Linux文件系统
  8. 抖音计算机表白文档,抖音上的表白代码是什么 抖音表白代码自动生成方法
  9. Java获取访客IP地址
  10. 抖音视频搬运到YouTube,月入几万