我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringBoot整合Ehcache实现热点数据缓存的方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringBoot整合Ehcache实现热点数据缓存的方法是什么

这篇文章主要介绍了SpringBoot整合Ehcache实现热点数据缓存的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot整合Ehcache实现热点数据缓存的方法是什么文章都会有所收获,下面我们一起来看看吧。

    一、简介

    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 的依赖信息

    <!-- ehcache依赖 --><dependency>    <groupId>net.sf.ehcache</groupId>    <artifactId>ehcache</artifactId>    <version>2.10.6</version></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-cache</artifactId></dependency>
    2、配置文件

    创建 EhCache 的配置文件:ehcache.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">     <!--        磁盘存储:将缓存中暂时不使用的对象,转移到硬盘,类似于Windows系统的虚拟内存        path:指定在硬盘上存储对象的路径        path可以配置的目录有:        user.home(用户的家目录)        user.dir(用户当前的工作目录)        java.io.tmpdir(默认的临时目录)        ehcache.disk.store.dir(ehcache的配置目录)        绝对路径(如:d:\\ehcache)        查看路径方法:String tmpDir = System.getProperty("java.io.tmpdir");     -->    <diskStore path="java.io.tmpdir" />     <!--        defaultCache:默认的缓存配置信息,如果不加特殊说明,则所有对象按照此配置项处理        maxElementsInMemory:设置了缓存的上限,最多存储多少个记录对象        eternal:代表对象是否永不过期 (指定true则下面两项配置需为0无限期)        timeToIdleSeconds:最大的发呆时间 /秒        timeToLiveSeconds:最大的存活时间 /秒        overflowToDisk:是否允许对象被写入到磁盘        说明:下列配置自缓存建立起600秒(10分钟)有效 。        在有效的600秒(10分钟)内,如果连续120秒(2分钟)未访问缓存,则缓存失效。        就算有访问,也只会存活600秒。     -->    <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="600"                  timeToLiveSeconds="600" overflowToDisk="true" />     <!--        maxElementsInMemory,内存缓存中最多可以存放的元素数量,若放入Cache中的元素超过这个数值,则有以下两种情况                            1)若overflowToDisk=true,则会将Cache中多出的元素放入磁盘文件中                            2)若overflowToDisk=false,则根据memoryStoreEvictionPolicy策略替换Cache中原有的元素        eternal,            缓存中对象是否永久有效        timeToIdleSeconds,  缓存数据在失效前的允许闲置时间(单位:秒),仅当eternal=false时使用,默认值是0表示可闲置时间无穷大,若超过这个时间没有访问此Cache中的某个元素,那么此元素将被从Cache中清除        timeToLiveSeconds,  缓存数据的总的存活时间(单位:秒),仅当eternal=false时使用,从创建开始计时,失效结束        maxElementsOnDisk,  磁盘缓存中最多可以存放的元素数量,0表示无穷大        overflowToDisk,     内存不足时,是否启用磁盘缓存        diskExpiryThreadIntervalSeconds,    磁盘缓存的清理线程运行间隔,默认是120秒        memoryStoreEvictionPolicy,  内存存储与释放策略,即达到maxElementsInMemory限制时,Ehcache会根据指定策略清理内存  共有三种策略,分别为LRU(最近最少使用)、LFU(最常用的)、FIFO(先进先出)    -->    <cache name="user"     maxElementsInMemory="10000"     eternal="false"     timeToIdleSeconds="120"     timeToLiveSeconds="120"     maxElementsOnDisk="10000000"     overflowToDisk="true"     memoryStoreEvictionPolicy="LRU" /> </ehcache>

    <cache name="user"></cache>,我们是可以配置多个来解决我们不同业务处所需要的缓存策略的

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

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

    指定了 EhCache 的配置文件位置

    3、开启缓存

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

    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@EnableCachingpublic 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);}

    关于“SpringBoot整合Ehcache实现热点数据缓存的方法是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SpringBoot整合Ehcache实现热点数据缓存的方法是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    SpringBoot整合Ehcache实现热点数据缓存的方法是什么

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    SpringBoot整合Ehcache实现热点数据缓存的方法是什么

    这篇文章主要介绍了SpringBoot整合Ehcache实现热点数据缓存的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot整合Ehcache实现热点数据缓存的方法是什么文章都会有所收
    2023-07-06

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

    本篇内容介绍了“SpringBoot中怎么整合Ehcache实现热点数据缓存”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、简介EhCac
    2023-07-06

    SpringBoot中整合Ehcache实现热点数据缓存的详细过程

    这篇文章主要介绍了SpringBoot中整合Ehcache实现热点数据缓存,SpringBoot中使用Ehcache比较简单,只需要简单配置,说白了还是SpringCache的用法,合理使用缓存机制,可以很好地提高项目的响应速度,需要的朋友可以参考下
    2023-05-15

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

    本篇内容主要讲解“SpringBoot怎么整合Redis实现热点数据缓存”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot怎么整合Redis实现热点数据缓存”吧!我们以IDEA
    2023-07-05

    SpringBoot整合Redis实现热点数据缓存的示例代码

    这篇文章主要介绍了SpringBoot中整合Redis实现热点数据缓存,本文以IDEA + SpringBoot作为 Java中整合Redis的使用 的测试环境,结合实例代码给大家详细讲解,需要的朋友可以参考下
    2023-03-13

    SpringBoot怎么整合Redis实现高并发数据缓存

    这篇文章主要讲解了“SpringBoot怎么整合Redis实现高并发数据缓存”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot怎么整合Redis实现高并发数据缓存”吧!什么是
    2023-07-05

    SpringBoot整合Mybatis Plus多数据源的实现方法是什么

    这篇文章主要讲解了“SpringBoot整合Mybatis Plus多数据源的实现方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot整合Mybatis Plus多数
    2023-06-25

    SpringBoot整合Redis实现高并发数据缓存的示例讲解

    这篇文章主要介绍了SpringBoot整合Redis实现高并发数据缓存,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-13

    redis处理热点数据的方法是什么

    Redis处理热点数据的方法有多种,下面是一些常用的方法:使用缓存:将热点数据存储在Redis缓存中,以提高访问速度。当查询热点数据时,首先检查缓存中是否存在该数据,如果存在则直接返回缓存中的数据,否则从数据库中获取数据并存入缓存。使用Ha
    redis处理热点数据的方法是什么
    2024-04-09

    springboot整合多数据源配置的方式是什么

    这篇文章将为大家详细讲解有关springboot整合多数据源配置的方式是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。简介主要介绍两种整合方式,分别是 springboot+mybati
    2023-06-22

    tk-mybatis整合springBoot使用两个数据源的方法是什么

    这篇文章主要介绍“tk-mybatis整合springBoot使用两个数据源的方法是什么”,在日常操作中,相信很多人在tk-mybatis整合springBoot使用两个数据源的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的
    2023-06-21

    Spring整合MyBatis的实现方法是什么

    这篇文章主要讲解了“Spring整合MyBatis的实现方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring整合MyBatis的实现方法是什么”吧!一、Spring 项目整体
    2023-07-05

    SpringBoot结合Mybatis实现创建数据库表的方法是什么

    这篇文章跟大家分析一下“SpringBoot结合Mybatis实现创建数据库表的方法是什么”。内容详细易懂,对“SpringBoot结合Mybatis实现创建数据库表的方法是什么”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后
    2023-06-26

    SpringBoot整合MybatisPlus配置多数据源增强插件的方法是什么

    本篇内容介绍了“SpringBoot整合MybatisPlus配置多数据源增强插件的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
    2023-06-02

    SpringBoot整合sharding-jdbc实现自定义分库分表的方法是什么

    这篇文章主要讲解了“SpringBoot整合sharding-jdbc实现自定义分库分表的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot整合sharding-j
    2023-06-25

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录