iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot怎么整合Spring Cache实现Redis缓存
  • 202
分享到

SpringBoot怎么整合Spring Cache实现Redis缓存

2023-07-02 15:07:59 202人浏览 泡泡鱼
摘要

今天小编给大家分享一下SpringBoot怎么整合spring Cache实现Redis缓存的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下

今天小编给大家分享一下SpringBoot怎么整合spring Cache实现Redis缓存的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    1、简介

    Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。

    Spring Cache 提供了一层抽象,底层可以切换不同的cache实现。

    具体就是通过 CacheManager 接口来统一不同的缓存技术。

    CacheManager 是 Spring 提供的各种缓存技术抽象接口,这是默认的缓存技术,是缓存在Map中的,这也说明当服务挂掉的时候,缓存的数据就没了。

    针对不同的缓存技术需要实现不同的 CacheManager

    CacheManager描述
    EhCacheCacheManager使用 EhCache 作为缓存技术
    GuavaCacheManager使用 Google 的 GuavaCache 作为缓存技术
    RedisCacheManager使用 Redis 作为缓存技术

    2、常用注解

    Spring Boot 项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用 @EnableCaching 开启缓存支持即可。例如,使用 Redis 作为缓存技术,只需要导入 Spring data Redis 的 Maven 坐标即可。常用的注解有如下几个:

    注解说明
    @EnableCaching开启缓存注解功能
    @Cacheable在方法执行前 spring 先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中
    @CachePut将方法的返回值放到缓存中
    @CacheEvict将一条或多条数据从缓存中删除

    2.1、@EnableCaching

    该注解的主要功能就是开启缓存注解的功能,让 Spring Cache 中的其他注解生效。使用方式也十分简单,直接将其加在项目的启动类上方即可。

    @Slf4j@SpringBootApplication@EnableCachingpublic class CacheDemoApplication {    public static void main(String[] args) {        SpringApplication.run(CacheDemoApplication.class, args);        log.info("项目启动成功...");    }}

    2.2、@Cacheable

    @Cacheable注解主要是在方法执行前 先查看缓存中是否有数据。如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中。

    注解中的参数传递主要使用的是**SpEL(Spring Expression Language)**对数据进行获取传递,这有点类似于jsP中的EL表达式,常用方式如下几种:

    • “#p0”:获取参数列表中的第一个参数。其中的“#p”为固定写法,0为下标,代表第一个;

    • “#root.args[0]”:获取方法中的第一个参数。其中0为下标,代表第一个。

    • “#user.id”:获取参数 user 的 id 属性。注意的是这里的 user 必须要和参数列表中的参数名一致

    • “#result.id”:获取返回值中的 id 属性。

    来自Spring Cache源码:Spring Expression Language (SpEL) expression used for making the method

    @Cacheable注解中有几种常用的属性可进行需求性设置:

    • value:缓存的名称,每个缓存名称下面可以有多个 key

    • key:缓存的key。

    • condition:条件判断,满足条件时对数据进行缓存,值得注意的是该参数在Redis中无效

    • unless:条件判断,满足条件时则不对数据进行缓存,Redis中可使用该参数替代condition

    @Cacheable(value = "userCache", key = "#id", unless = "#result == null")@GetMapping("/{id}")public User getById(@PathVariable Long id) {    User user = userService.getById(id);    return user;}

    2.3、@CachePut

    @CachPut注解主要是将方法的返回值放到缓存中。这里同样是使用SpEL获取数据,常用的属性如下:

    • value:缓存的名称,每个缓存名称下面可以有多个 key

    • key:缓存的key。

    • condition:条件判断,满足条件时对数据进行缓存,值得注意的是该参数在Redis中无效

    • unless:条件判断,满足条件时则不对数据进行缓存,Redis中可使用该参数替代condition

    @CachePut(value = "userCache", key = "#user.id")@PostMappingpublic User save(User user) {    userService.save(user);    return user;}

    2.4、@CacheEvict

    @CacheeEvict主要是将一条或多条数据从缓存中删除,同样使用SpEL获取数据,常用的属性如下:

    • value:缓存的名称,每个缓存名称下面可以有多个 key

    • key:缓存的key。

    • condition:条件判断,满足条件时对数据进行缓存,值得注意的是该参数在Redis中无效

    • unless:条件判断,满足条件时则不对数据进行缓存,Redis中可使用该参数替代condition

    @CacheEvict(value = "userCache", key = "#result.id")@PutMappingpublic User update(User user) {    userService.updateById(user);    return user;}

    3、使用Redis当作缓存产品

    因为 Spring 默认的缓存技术无法持久化保存缓存数据,即服务挂了缓存也挂了,因此就需要使用Redis进行操作(其实也是因为学习了Redis)

    前面的SpringBoot整合Redis缓存验证码里面有记录着一些Redis的基本操作。

    3.1、坐标导入

    导入 maven 坐标:spring-boot-starter-data-redis、spring-boot-starter-cache

    <!--Spring Data Redis--><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--Spring Cache--><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-cache</artifactId></dependency>

    3.2、yml配置

    spring:
      redis:
        host: localhost
        port: 6379
        passWord: 123456
        database: 0
        cache:
            redis:
                time-to-live: 1800000 # 设置缓存有效期

    3.3、开启注解功能

    在启动类 com/itheima/CacheDemoApplication.java 上加入 @EnableCaching 注解,开启缓存注解功能

    @Slf4j@SpringBootApplication@ServletComponentScan@EnableCachingpublic class ReggieApplication {    public static void main(String[] args) {        SpringApplication.run(ReggieApplication.class, args);        log.info("springBoot项目启动成功……");    }}

    3.4、使用@Cacheable

    这里提一下有个坑就是使用的缓存时,返回值必须实现 Serializable 序列化接口,否则将会报错。

    这是因为在 NoSql 数据库中,并没有与我们 Java 基本类型对应的数据结构,所以在往 NoSQL 数据库中存储时,我们就必须将对象进行序列化,同时在网络传输中我们要注意到两个应用中 javabean 的 serialVersionUID 要保持一致,不然就不能正常的进行反序列化。

    @CacheEvict(value = "setmealCache",allEntries = true)@PostMappingpublic Result<String> save(@RequestBody SetmealDto setmealDto) {    log.info("套餐信息为{}", setmealDto);    setmealService.saveWithDish(setmealDto);    return Result.success("套餐" + setmealDto.getName() + "新增成功");}

    3.5、使用@CacheEvict

    这里用到了一个新属性allEntries,其是boolean类型,表示是否需要清除缓存中的所有元素。默认为false,表示不需要。当指定了 allEntries 为 true 时,Spring Cache将忽略指定的 key。有的时候我们需要 Cache 一下清除所有的元素,这比一个一个清除元素更有效率。

    @CacheEvict(value = "setmealCache",allEntries = true)@PutMappingpublic Result<String> updateWithDish(@RequestBody SetmealDto setmealDto) {    log.info(setmealDto.toString());    setmealService.updateWithDish(setmealDto);    return Result.success("套餐修改成功");}

    4、测试

    代码编写完成之后,重启工程,然后访问后台管理系统,对套餐数据进行新增以及删除,而后观察Redis中的数据发现写的代码是能正常跑到!成功!

    SpringBoot怎么整合Spring Cache实现Redis缓存

    以上就是“SpringBoot怎么整合Spring Cache实现Redis缓存”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

    --结束END--

    本文标题: SpringBoot怎么整合Spring Cache实现Redis缓存

    本文链接: https://www.lsjlt.com/news/342721.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

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

    下载Word文档
    猜你喜欢
    • SpringBoot怎么整合Spring Cache实现Redis缓存
      今天小编给大家分享一下SpringBoot怎么整合Spring Cache实现Redis缓存的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
      99+
      2023-07-02
    • SpringBoot详解整合Spring Cache实现Redis缓存流程
      目录1、简介2、常用注解2.1、@EnableCaching2.2、@Cacheable2.3、@CachePut2.4、@CacheEvict3、使用Redis当作缓存产品3.1、...
      99+
      2022-11-13
    • SpringBoot怎么整合Redis缓存
      SpringBoot怎么整合Redis缓存?针对这个问题,今天小编总结了这篇文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。1、引入缓存依赖<dependency> &...
      99+
      2022-10-18
    • SpringBoot2.X整合Spring-Cache缓存开发的实现
      目录引入依赖配置测试使用缓存@Cacheable注解的使用@CacheEvict注解的使用@Caching注解的使用@CachePut注解的使用Spring-Cache的不足读模式写...
      99+
      2022-11-13
    • SpringBoot怎么整合Redis实现热点数据缓存
      本篇内容主要讲解“SpringBoot怎么整合Redis实现热点数据缓存”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot怎么整合Redis实现热点数据缓存”吧!我们以IDEA ...
      99+
      2023-07-05
    • SpringBoot怎样整合redis的缓存?
      这篇文章为大家带来有关SpringBoot整合redis缓存的详细介绍。大部分知识点都是大家经常用到的,为此分享给大家做个参考。一起跟随小编过来看看吧。开启远程访问:找到redis中的redis.conf文...
      99+
      2022-10-18
    • SpringBoot怎么整合Redis缓存验证码
      今天小编给大家分享一下SpringBoot怎么整合Redis缓存验证码的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、简介...
      99+
      2023-07-02
    • SpringBoot怎么整合Redis实现高并发数据缓存
      这篇文章主要讲解了“SpringBoot怎么整合Redis实现高并发数据缓存”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot怎么整合Redis实现高并发数据缓存”吧!什么是...
      99+
      2023-07-05
    • Redis整合Spring结合使用缓存实例
      一、Redis介绍 什么是Redis? redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、s...
      99+
      2022-06-04
      缓存 实例 Redis
    • 基于Spring Cache实现Caffeine+Redis二级缓存
      目录一、聊聊什么是硬编码使用缓存?二、Spring Cache简介1、Cache接口2、CacheManager接口3、常用注解说明三、使用二级缓存需要思考的一些问题?四、Caffe...
      99+
      2022-11-13
    • Spring Cache+Redis缓存数据的实现示例
      目录1、为什么使用缓存2、常用的缓存注解2.1 @Cacheable2.2 @CacheEvict2.3、@Cacheput2.4、@Caching2.5、@CacheConfig3...
      99+
      2022-11-12
    • 在springboot使用spring 如何实现缓存cache
      本篇文章为大家展示了在springboot使用spring 如何实现缓存cache,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。声明式缓存Spring 定义 CacheManager 和 Cache...
      99+
      2023-05-31
      springboot spring cache
    • 基于Spring Cache如何实现Caffeine+Redis二级缓存
      这篇文章主要为大家展示了“基于Spring Cache如何实现Caffeine+Redis二级缓存”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于Spring Cache如...
      99+
      2023-06-29
    • Spring项目中使用Cache Redis实现数据缓存
      目录Spring项目中实现数据缓存一、Spring Cache + Redis 介绍二、项目中集成1. 引入依赖2. 添加 redis 配置类3. 配置文件增加 redis 配置4....
      99+
      2022-11-13
    • 使用Spring如何实现注解Cache与Redis缓存
      使用Spring如何实现注解Cache与Redis缓存?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. redis 和 ehcache的区别:简单了解了下,个人觉得 从部署上...
      99+
      2023-05-31
      spring redis 缓存
    • spring整合redis缓存实现以注解的形式使用
      本篇文章给大家分享的是有关spring整合redis缓存实现以注解的形式使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。maven项目中在pom.xml中依赖2个jar包,其...
      99+
      2023-05-31
      redis 注解 spring
    • springboot整合单机缓存ehcache的实现
      区别于redis的分布式缓存,ehcache是纯java进程内的单机缓存,根据不同的场景可选择使用,以下内容主要为springboot整合ehcache以及注意事项 添加pom引用 ...
      99+
      2023-02-13
      springboot单机缓存ehcache springboot ehcache
    • SpringBoot整合Redis实现热点数据缓存的示例代码
      我们以IDEA + SpringBoot作为 Java中整合Redis的使用 的测试环境 首先,我们需要导入Redis的maven依赖 <!-- Redis的maven依赖包 ...
      99+
      2023-03-13
      SpringBoot热点数据缓存 SpringBoot整合Redis缓存
    • SpringBoot中怎么整合Ehcache实现热点数据缓存
      本篇内容介绍了“SpringBoot中怎么整合Ehcache实现热点数据缓存”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、简介EhCac...
      99+
      2023-07-06
    • SpringBoot整合Redis实现高并发数据缓存的示例讲解
      目录什么是缓存为什么要用缓存Redis为什么这么快实现一个用户信息的缓存方式一:利用RedisTemplate实现 导入依赖添加配置添加redis工具类及配置类service层con...
      99+
      2023-03-13
      SpringBoot Redis高并发数据缓存 SpringBoot Redis缓存
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作