常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。

这篇具有很好参考价值的文章主要介绍了常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。

1.在pom添加依赖:

常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。,java,spring,mybatis,spring,java

      <!-- ehcache 相关依赖 -->
        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>2.8.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>

常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。,java,spring,mybatis,spring,java

2.在applicationContext.xml添加命名空间:

xmlns:cache="http://www.springframework.org/schema/cache

http://www.springframework.org/schema/cache 
http://www.springframework.org/schema/cache/spring-cache-3.1.xsd

3.在applicationContext.xml中配置ehcache:

常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。,java,spring,mybatis,spring,java

   <!-- 缓存注解驱动(请将其配置在Spring主配置文件中) -->
    <cache:annotation-driven cache-manager="cacheManager" />  

    <!-- Spring提供的基于的Ehcache实现的缓存管理器 -->
    <bean id="ehCacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <!-- 指定配置文件的位置 -->
        <property name="configLocation" value="classpath:ehcache-setting.xml"></property>  
    </bean>
    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">  
        <property name="cacheManager" ref="ehCacheManagerFactory"></property>  
    </bean>

常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。,java,spring,mybatis,spring,java

4.创建ehcache的配置文件ehcache-setting.xml:

常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。,java,spring,mybatis,spring,java

<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
    <!-- 指定一个文件目录,当EhCache把数据写到硬盘上时,将把数据写到这个文件目录下 -->
    <diskStore path="java.io.tmpdir"/>

    <!-- 默认缓存 -->
    <defaultCache
            maxElementsInMemory="10000" 
            eternal="false" 
            overflowToDisk="true"
            timeToIdleSeconds="10"
            timeToLiveSeconds="20"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"/>

    <!-- 自定义缓存 -->
    <cache name="cacheTest"
        maxElementsInMemory="1000"
        eternal="false"
        overflowToDisk="true"
        timeToIdleSeconds="10"
        timeToLiveSeconds="20"/>

</ehcache>

常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。,java,spring,mybatis,spring,java

这里我们配置了自定义缓存cacheTest,10秒过期。

cache元素的属性:

  • name:缓存名称
  • maxElementsInMemory:内存中最大缓存对象数
  • maxElementsOnDisk:硬盘中最大缓存对象数,若是0表示无穷大
  • eternal:true表示对象永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false
  • overflowToDisk:true表示当内存缓存的对象数目达到了
  • maxElementsInMemory界限后,会把溢出的对象写到硬盘缓存中。注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行。
  • diskSpoolBufferSizeMB:磁盘缓存区大小,默认为30MB。每个Cache都应该有自己的一个缓存区。
  • diskPersistent:是否缓存虚拟机重启期数据,是否持久化磁盘缓存,当这个属性的值为true时,系统在初始化时会在磁盘中查找文件名 为cache名称,后缀名为index的文件,这个文件中存放了已经持久化在磁盘中的cache的index,找到后会把cache加载到内存,要想把 cache真正持久化到磁盘,写程序时注意执行net.sf.ehcache.Cache.put(Element element)后要调用flush()方法。
  • diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认为120秒
  • timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了timeToIdleSeconds属性 值,这个对象就会过期,EHCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限 期地处于空闲状态
  • timeToLiveSeconds:设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有 效。如果该属性值为0,则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有意义
  • memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。可选策略有:LRU(最近最少使用,默认策略)、FIFO(先进先出)、LFU(最少访问次数)。

5.在业务类wdSolrService中使用缓存注解@Cacheable:

    @Cacheable(value = "cacheTest", key = "#param")
    public String getTimestamp(String param) {
        Long timestamp = System.currentTimeMillis();
        return timestamp.toString();
    }

这里注解中value=”cacheTest”与ehcache-setting.xml中的cache名称属性值一致。 

6.测试缓存效果:

常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。,java,spring,mybatis,spring,java

    @Test
    public void main() throws InterruptedException {
        System.out.println("第一次调用:" + wdSolrService.getTimestamp("param"));
        Thread.sleep(2000);
        System.out.println("2秒之后调用:" + wdSolrService.getTimestamp("param"));
        Thread.sleep(11000);
        System.out.println("再过11秒缓存过期之后调用:" + wdSolrService.getTimestamp("param"));
    }

常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。,java,spring,mybatis,spring,java

测试结果:

常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。,java,spring,mybatis,spring,java

@Cacheable、@CachePut、@CacheEvict 注释介绍

主要作用:

  • @Cacheable 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存
  • @CachePut 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用
  • @CachEvict 主要针对方法配置,能够根据一定的条件对缓存进行清空

主要属性介绍:

  • value:缓存的名称,在 spring 配置文件中定义,必须指定至少一个。例如:@Cacheable(value=”mycache”) 或者 @Cacheable(value={”cache1”,”cache2”}
  • key:缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合。例如:@Cacheable(value=”testcache”,key=”#userName”)
  • condition:缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存。例如:@Cacheable(value=”testcache”,condition=”#userName.length()>2”)
  • allEntries:是否清空所有缓存内容,缺省为 false,如果指定为 true,则方法调用后将立即清空所有缓存。例如:@CachEvict(value=”testcache”,allEntries=true)
  • beforeInvocation:是否在方法执行前就清空,缺省为 false,如果指定为 true,则在方法还没有执行的时候就清空缓存,缺省情况下,如果方法执行抛出异常,则不会清空缓存。例如:@CachEvict(value=”testcache”,beforeInvocation=true)

 chatgpt免费体验:http://www.chat136.com

chatgpt学习:http://me.chat136.com文章来源地址https://www.toymoban.com/news/detail-566788.html

到了这里,关于常用的缓存工具有ehcache、memcache和redis,这里介绍spring中ehcache的配置。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • spring boot整合cache使用Ehcache 进行数据缓存

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

    2024年02月19日
    浏览(41)
  • Springboot—Spring Cache 缓存方案详解及代码-Ehcache

    Spring从3.1开始定义了 org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 接口来统一不同的缓存技术; 并支持使用 JCache(JSR-107) 注解简化我们开发。 常用的缓存实现有 RedisCache 、EhCache、ConcurrentMapCache 、Guava Cache( 谷歌) 等。 Spring Cache是一个框架,实现了基于注解的

    2024年02月03日
    浏览(45)
  • Redis与其他缓存解决方案(如Memcached)的区别是什么?

    Redis和其他缓存解决方案(如Memcached)在设计理念、功能和特点上有一些区别,以下是它们的主要区别: 数据类型支持:Redis支持多种数据类型(如字符串、哈希表、列表、集合、有序集合等),可以存储更丰富的数据结构。而Memcached只支持简单的键值对存储,不支持数据结

    2024年02月14日
    浏览(42)
  • 系统架构设计师之缓存技术:Redis与Memcache能力比较

    系统架构设计师之缓存技术:Redis与Memcache能力比较 

    2024年02月11日
    浏览(47)
  • Spring Boot进阶(67):高性能缓存!使用Spring Boot轻松集成Memcached。

            Memcached是一款高性能的分布式内存对象缓存系统,主要用于动态Web应用中减轻数据库负载。Spring Boot是一款基于Spring框架的快速开发框架,集成了大量的常用技术和组件,方便开发者快速搭建项目。将两者结合起来,可以提高Web应用的性能,并减少数据库的压力。

    2024年02月07日
    浏览(64)
  • Ehcache 缓存框架详解

    Ehcache 是一个广泛使用的 Java 缓存框架,能够有效提升应用性能,并减少与后端数据库的交互次数。它采用了一系列高级缓存策略,包括内存缓存、磁盘缓存、分布式缓存等,并提供了丰富的 API 和工具类,可以方便地完成缓存的读写和管理。 Ehcache 主要有以下特点: 快速:

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

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

    2024年02月16日
    浏览(51)
  • SpringBoot 如何使用 Ehcache 作为缓存

    在现代分布式应用程序中,跟踪请求和了解应用程序的性能是至关重要的。Spring Boot Sleuth是一个分布式跟踪解决方案,它可以帮助您在分布式系统中跟踪请求并分析性能问题。本文将介绍如何在Spring Boot应用程序中使用Sleuth进行分布式跟踪。 Spring Boot Sleuth是Spring Cloud的一部分

    2024年02月07日
    浏览(34)
  • 高性能内存对象缓存 Memcached

    一套开源的高性能分布式内存对象缓存系统 所有的数据都存储在内存中 支持任意存储类型的数据 提高网站的访问速度 Memcached 是典型的 C/S 架构,因此需要安装 Memcached 服务端与 Memcached API 客户端。 ①数据存储方式: Slab Allocation 按组分配内存,每次先分配一个Slab,相当于一

    2024年02月15日
    浏览(45)
  • 【分布式缓存】一文详解 Memcached

    Memcached 是一个开源的,支持高性能,高并发的分布式内存缓存系统,由 C 语言编写,总共 2000 多行代码。从软件名称上看,前 3 个字符 Mem 就是内存的意思,而接下来的后面 5 个字符 cache 就是缓存的意思,最后一个字符 d ,是 daemon 的意思,代表的是服务器端守护进程模式服

    2024年02月04日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包