0

0

SpringBoot中怎么整合Ehcache实现热点数据缓存

王林

王林

发布时间:2023-05-15 21:10:04

|

1522人浏览过

|

来源于亿速云

转载

    一、简介

    ehcache 是一个纯 java 的进程内缓存框架,具有快速、精干等特点,是 hibernate 中默认cacheprovider。ehcache 是一种广泛使用的开源 java 分布式缓存。主要面向通用缓存,java ee 和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个 gzip 缓存 servlet 过滤器,支持 rest 和 soap api 等特点。

    特性
    快速、简单
    多种缓存策略
    缓存数据有两级:内存和磁盘,因此无需担心容量问题
    缓存数据会在虚拟机重启的过程中写入磁盘
    可以通过RMI、可插入API等方式进行分布式缓存
    具有缓存和缓存管理器的侦听接口
    支持多缓存管理器实例,以及一个实例的多个缓存区域
    提供Hibernate的缓存实现
    与 Redis 相比
    EhCache 直接在jvm虚拟机中缓存,速度快,效率高;但是缓存共享麻烦,集群分布式应用不方便。
    Redis 是通过 Socket 访问到缓存服务,效率比 EhCache 低,比数据库要快很多,处理集群和分布式缓存方便,有成熟的方案。如果是单个应用或者对缓存访问要求很高的应用,用 EhCache 。如果是大型系统,存在缓存共享、分布式部署、缓存内容很大的,建议用 Redis。
    EhCache 也有缓存共享方案,不过是通过 RMI 或者 Jgroup 多播方式进行广播缓存通知更新,缓存共享复杂,维护不方便;简单的共享可以,但是涉及到缓存恢复,大数据缓存,则不合适。

    二、引入 EhCache

    1、引入依赖

    在 pom.xml 文件中,引入 Ehcache 的依赖信息

    
    
        net.sf.ehcache
        ehcache
        2.10.6
    
    
        org.springframework.boot
        spring-boot-starter-cache
    

    2、配置文件

    创建 EhCache 的配置文件:ehcache.xml

    
    
     
        
        
     
        
        
     
        
        
     
    

    ,我们是可以配置多个来解决我们不同业务处所需要的缓存策略的

    默认情况下,EhCache 的配置文件名是固定的,ehcache.xml,如果需要更改文件名,需要在 application.yml 文件中指定配置文件位置,如:

    spring:
      cache:
        type: ehcache
        ehcache:
          config: classpath:/ehcache.xml

    指定了 EhCache 的配置文件位置

    3、开启缓存

    开启缓存的方式,也和 Redis 中一样,在启动类上添加 @EnableCaching 注解即可:

    Red Panda AI
    Red Panda AI

    AI文本生成图像

    下载
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cache.annotation.EnableCaching;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
     
    @SpringBootApplication
    @EnableCaching
    public class SbmApplication {
     
        public static void main(String[] args) {
            SpringApplication.run(SbmApplication.class, args);
        }
    }

    三、开始使用

    1、@CacheConfig

    这个注解在类上使用,用来描述该类中所有方法使用的缓存名称,当然也可以不使用该注解,直接在具体的缓存注解上配置名称,示例代码如下:

    @Service
    @CacheConfig(cacheNames = "user")
    public class UserServiceImpl implements UserService {
     
    }

    2、@Cacheable

    这个注解一般加在查询方法上,表示将一个方法的返回值缓存起来,默认情况下,缓存的 key 就是方法的参数,缓存的 value 就是方法的返回值。示例代码如下:

    @Override
    @Cacheable(value = "user", key = "#id")
    public User getUserById(Long id) {
        return userMapper.getUserById(id);
    }

    如果在类上没有加入 @CacheConfig,我们则需要使用 value 来指定缓存名称
    这里如果需要多个 key 时,需要使用 “:” 来连接,如:

    @Cacheable(value = "user", key = "#name+':'+#phone")

    3、@CachePut

    这个注解一般加在更新方法上,当数据库中的数据更新后,缓存中的数据也要跟着更新,使用该注解,可以将方法的返回值自动更新到已经存在的 key 上,示例代码如下:

    @Override
    @CachePut(value = "user", key = "#id")
    public User updateUserById(User user) {
        return userMapper.updateUserById(user);
    }

    4、@CacheEvict

    这个注解一般加在删除方法上,当数据库中的数据删除后,相关的缓存数据也要自动清除,该注解在使用的时候也可以配置按照某种条件删除( condition 属性)或者或者配置清除所有缓存( allEntries 属性),示例代码如下:

    @Override
    @CacheEvict(value = "user", key = "#id")
    public void deleteUserById(Long id) {
        userMapper.deleteUserById(id);
    }

    相关专题

    更多
    java
    java

    Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    804

    2023.06.15

    java正则表达式语法
    java正则表达式语法

    java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

    723

    2023.07.05

    java自学难吗
    java自学难吗

    Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

    727

    2023.07.31

    java配置jdk环境变量
    java配置jdk环境变量

    Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

    395

    2023.08.01

    java保留两位小数
    java保留两位小数

    Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

    398

    2023.08.02

    java基本数据类型
    java基本数据类型

    java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

    445

    2023.08.02

    java有什么用
    java有什么用

    java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

    428

    2023.08.02

    java在线网站
    java在线网站

    Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

    16861

    2023.08.03

    php源码安装教程大全
    php源码安装教程大全

    本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

    2

    2025.12.31

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Redis6入门到精通超详细教程
    Redis6入门到精通超详细教程

    共47课时 | 5.1万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号