缓存框架Ehcache的介绍,且与Springboot的集成

这篇具有很好参考价值的文章主要介绍了缓存框架Ehcache的介绍,且与Springboot的集成。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

缓存技术在现代软件开发中扮演着越来越重要的角色,作为一个成熟的开源Java缓存库,Ehcache在提高应用性能、减少数据库负载、加速用户体验方面占有一席之地。本篇博客将全方位多角度地深入理解Ehcache,帮助大家把握其核心功能、实现原理及应用实例。
Ehcache是一个纯Java的进程内缓存框架,具有速度快、简单、可伸缩、可配置及提供多级缓存功能等优点,因此成为了许多开发者的首选缓存方案。

二、核心特性

Ehcache拥有以下核心特性:

  • 简易性:易于配置和使用。
  • 内存和磁盘存储:支持内存和磁盘两种缓存方式,甚至在JVM重启后可以恢复磁盘上的缓存。
  • 缓存策略:提供多种缓存策略,如LRU(Least Recently Used),LFU(Least Frequently Used)等。
  • 数据一致性:支持强一致性和最终一致性模型。
  • 事务性缓存:支持JTA和XA事务标准,保证缓存操作的原子性。
  • 集群缓存:通过Terracotta支持分布式缓存。

三、架构与工作原理

Ehcache的架构主要包含以下几部分:

  • Cache Manager:管理多个缓存实例。
  • Cache:存放缓存数据的容器,包括内存和磁盘两级。
  • Element:缓存的基本单元,包含key和value。
  • Cache Eviction Policy:缓存驱逐策略负责决定哪些元素应该被移除。

四、性能优化

  • 数据分区:将缓存数据进行逻辑分区,提高访问速度。
  • 并发策略:Ehcache设计了多种并发策略以支持高并发环境。
  • 缓存加载器:可用于启动时预加载数据,减少首次命中时的延迟。

五、与Springboot集成

  1. 首先开启缓存,添加@EnableCache注解
@EnableCaching
public class B2bFwk2CsB2bAdapterApplication {
  1. 添加cacheManager和Factory
@Component
public class CacheConfiguration{

    @Bean
    public EhCacheCacheManager ehCacheCacheManager(EhCacheManagerFactoryBean bean) {
        return new EhCacheCacheManager(bean.getObject());
    }
 
    @Bean
    public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
        EhCacheManagerFactoryBean cacheManagerFactoryBean = new EhCacheManagerFactoryBean();
        cacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
        cacheManagerFactoryBean.setShared(true);
        return cacheManagerFactoryBean;
    }
}
  1. 在resource路径下添加配置文件ehcache.xml,配置文件可以配置每个缓存的一些信息如最大数量,过期时间等等,也可以配置一个模板给具有相同配置的缓存使用。这里只举例配置了一个缓存叫csb2b_adapter_guildline。
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
    <cache name="csb2b_adapter_guildline" maxElementsInMemory="1000" eternal="true"
    	timeToIdleSeconds="0"  timeToLiveSeconds="0"/>
</ehcache>
  1. 然后就可以在具体的方法上面应用这个缓存,通过@Cacheable value来设置所使用的缓存,key来设置缓存的键,当调用这个方法时,会将参数按照配置的那样进行拼接,然后到csb2b_adapter_guildline里面找这个key是否存在,如果存在则进行返回,从而提高查询效率。
@Cacheable(value = "csb2b_adapter_guildline", key = "#tpId+'_'+#msgType+'_'+#msgFormat+'_'+#direction", unless = "#result == null")
CSB2BAdapterGuideline selectGuideline(String tpId, String msgType, String msgFormat, String direction);

六、xml文件的相关配置

Ehcache 的CacheManager构造函数或工厂方法被调用时,会默认加载 classpath 下名为ehcache.xml的配置文件。如果加载失败,会加载 Ehcache jar 包中的ehcache-failsafe.xml文件,这个文件中含有简单的默认配置。 ehcache.xml 配置参数说明:文章来源地址https://www.toymoban.com/news/detail-806852.html

  • name:缓存名称。
  • maxElementsInMemory:缓存最大个数。
  • eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。
  • timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当 eternal=false 对象不是永久有效时使用,可选属性,默认值是 0,也就是可闲置时间无穷大。
  • timeToLiveSeconds:缓存数据的生存时间(TTL),也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是 0 就意味着元素可以停顿无穷长的时间。
  • maxEntriesLocalDisk:当内存中对象数量达到 maxElementsInMemory 时,Ehcache 将会对象写到磁盘中。
  • overflowToDisk:内存不足时,是否启用磁盘缓存。
  • diskSpoolBufferSizeMB:这个参数设置 DiskStore(磁盘缓存)的缓存区大小。默认是 30MB。每个 Cache 都应该有自己的一个缓冲区。
  • maxElementsOnDisk:硬盘最大缓存个数。
  • diskPersistent:是否在 VM 重启时存储硬盘的缓存数据。默认值是 false。
  • diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是 120 秒。
  • memoryStoreEvictionPolicy:当达到 maxElementsInMemory 限制时,Ehcache 将会根据指定的策略去清理内存。默认策略是 LRU(最近最少使用)。你可以设置为 FIFO(先进先出)或是 LFU(较少使用)。
  • clearOnFlush:内存数量最大时是否清除。

到了这里,关于缓存框架Ehcache的介绍,且与Springboot的集成的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot:缓存不止redis,学会使用本地缓存ehcache

    随着redis的普及,更多的同学对redis分布式缓存更加熟悉,但在一些实际场景中,其实并不需要用到redis,使用更加简单的本地缓存即可实现我们的缓存需求。 今天,我们一起来看看本地缓存组件ehcache ehcache是基于java开发的本地缓存组件,无需单独安装部署,只要引入jar包就

    2024年02月01日
    浏览(43)
  • 如何在Spring Boot中使用EhCache缓存

    在查询数据的时候,数据大多来自于数据库,我们会基于SQL语句与数据库交互,数据库一般会基于本地磁盘IO将数据读取到内存,返回给Java服务端,我们再将数据响应给前端,做数据展示。 但是MySQL这种关系型数据库查询数据相对比较慢,因为有磁盘IO,或者是全盘扫描的风

    2024年02月01日
    浏览(48)
  • spring boot整合cache使用Ehcache 进行数据缓存

    之前的文章 spring boot整合 cache 以redis服务 处理数据缓存 便捷开发 带着大家通过spring boot整合了 cache 缓存 那么 我们就来说说 其他服务的缓存 而spring boot默认的缓存方案就是 cache 用simple模式 spring boot的强大在于它的整合能力 它将其他缓存技术整合 统一了接口 简单说 所有的

    2024年02月19日
    浏览(41)
  • 【SpringBoot3】Spring Boot 3.0 集成 Redis 缓存

    Redis缓存是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它主要用于作为数据库、缓存和消息中间件,以快速读写和丰富的数据结构支持而著称。 在应用程序和数据库之间,Redis缓存作为一个中间层起着关键

    2024年02月21日
    浏览(56)
  • SpringSecurity源码分析(一) SpringBoot集成SpringSecurity即Spring安全框架的加载过程

          Spring Security是一个强大的并且高度可定制化的访问控制框架。 它基于spring应用。 Spring Security是聚焦于为java应用提供授权和验证的框架。像所有的spring项目一样,Spring Security真正的强大在于可以非常简单的拓展功能来实现自定义的需求。       在分析SpringBoot集成的Sp

    2024年02月03日
    浏览(46)
  • 变更缓存供应商EHCACHE

    导入相关坐标依赖 导入相关配置 导入ehcache xml配置 这里需要指定特定的缓存位置 testCache,timeToIdleSeconds 表示设置缓存的时间

    2024年02月16日
    浏览(51)
  • 缓存类型及优缺点:Ehcache、Caffeine、Memcached和Redis的比较

    在Java中,常见的缓存类型包括内存缓存、磁盘缓存和分布式缓存。这些缓存类型在功能和使用方式上有一些区别。 内存缓存:将数据存储在应用程序的内存中,以提高数据的读取速度。常见的内存缓存实现包括HashMap和ConcurrentHashMap等。内存缓存的优点是读写速度快,但容量

    2024年02月05日
    浏览(54)
  • Spring | Spring Cache 缓存框架

    Spring Cache 是 Spring 的一个框架, 实现了基于注解的缓存功能 。只需简单加一个 注解 ,就能实现 缓存功能 。 Spring Cache提供了一层抽象 , 底层可以切换不同的缓存实现 。比较 常见 的(底层) 缓存实现 有: Redis、EHCache、Caffeine 。可自定义地修改 Spring Cache 底层的 缓存实现 。

    2024年02月08日
    浏览(46)
  • springBoot集成caffeine,自定义缓存配置 CacheManager

    目录 springboot集成caffeine Maven依赖 配置信息:properties文件 config配置 使用案例 Caffeine定制化配置多个cachemanager springboot集成redis并且定制化配置cachemanager Caffeine是一种基于 服务器内存的缓存库 。它将数据存储在应用程序的内存中,以实现快速的数据访问和高性能。 由于Caffei

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包