首页 > 其他分享 >Spring Cache 快速入门

Spring Cache 快速入门

时间:2023-01-16 17:25:54浏览次数:45  
标签:缓存 入门 Spring Cache Redis CacheManager spring

一、Spring Cache 快速入门

1、Spring Cache 简介

什么是 Spring Cache?

  • Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
  • Spring Cache 提供了一层抽象,底层可以切换不同的 cache 实现。具体就是通过 CacheManager 接口来统一不同的缓存技术。
  • CacheManager 是 Spring 提供的各种缓存技术抽象接口。

Spring 中默认有如下缓存:

image

针对不同的缓存技术需要实现不同的 CacheManager,因此需要导入对应的依赖,使用对应的 XxxCacheManager,常用的缓存技术的 CacheManager 如下:

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

2、Spring Cache 常用注解

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

在 spring boot 项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用 @EnableCaching 开启缓存支持即可。例如,使用 Redis 作为缓存技术,只需要导入 Spring data Redis 的 maven 坐标即可。

3、Spring Cache 案例

使用当下最流行的 Redis 作为缓存。

步骤:

  1. 导入 Redis 坐标,导入 Spring Cache 坐标

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-cache</artifactId>
    	<version>2.4.5</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-data-redis</artifactId>
    	<version>2.4.5</version>
    </dependency>
    
  2. 配置配置文件。

    spring:
      application:
        name: 9fall
      redis:
        host: (IP) # Redis 地址,需要开启 Redis 服务
        port: 6379
        database: 0
      cache:
        redis:
          time-to-live: 1800000
    

    ❗注:使用本地 Redis 时,可以不写配置文件,spring.cache.redis 按需配置。

  3. 使用 @EnableCaching 开启缓存(配置类配置即可)

  4. 使用 @Cacheable 将数据缓存

    //❗返回值必须被序列化,否则会出现序列化异常错误。
    @Cacheable(value = "setmealCache", key = "#setmealDto.categoryId")
    @Override
    public List<Setmeal> myList(SetmealDto setmealDto) {
        // ...
        return list;
    }
    
  5. 当数据库中数据被修改,为防止脏数据,可以使用 @CacheEvict 注解用在增删改方法上,这样数据修改后就可以避免读取脏数据。(非最佳实践)。allEntries 指定改缓存空间的所有数据都被删除。

    ❗注:4,5 操作的都为 setmealCache 的缓存数据。

    @CacheEvict(value = "setmealCache",allEntries = true)
    @Override
    public void updateStatus(int status, List<Long> ids)
    

标签:缓存,入门,Spring,Cache,Redis,CacheManager,spring
From: https://www.cnblogs.com/9fall/p/17055922.html

相关文章

  • spring boot 图文验证码(Kaptcha)使用
    如何使用可以直接去官网http://code.google.com/p/kaptcha/下载jar,或者在pom.xml中导入` <groupId>com.baomidou</groupId> <artifactId>kaptcha-spring-boot-sta......
  • yml文件配置了但是springboot读不到yml的内容的问题(已解决)
    在写项目时可能误操作加了这一句代码,结果就导致了系统读不到yml配置解决方法:删除pom.xml中的<packagin>pom</packagin>或者尝试 https://blog.csdn.net/qq_41555595/art......
  • gcache使用
    gcachegache感觉是个很不错的库,小巧实用,funcmain(){//size:10gc:=gcache.New(10).Build()gc.Set("key","value")v,err:=gc.Get("key")iferr!......
  • Spring 源码分析
    1.Springbean的生命周期2.Spring启动流程详解3.Spring扫描底层流程详解4.SpringBeanPostProcessor架构5.SpringApplicationContext和BeanFactory架构图6.......
  • 【深入浅出Spring原理及实战】「源码调试分析」结合DataSourceRegister深入分析Import
    每日一句人的一生中不可能会一帆风顺,总会遇到一些挫折,当你对生活失去了信心的时候,仔细的看一看、好好回想一下你所遇到的最美好的事情吧,那会让你感觉到生活的美好。注入案例......
  • 【深入浅出Spring原理及实战】「源码调试分析」结合DataSourceRegister深入分析Import
    每日一句人的一生中不可能会一帆风顺,总会遇到一些挫折,当你对生活失去了信心的时候,仔细的看一看、好好回想一下你所遇到的最美好的事情吧,那会让你感觉到生活的美好。注......
  • FreeMaker入门介绍
    一、FreeMaker介绍FreeMarker是一款免费的Java模板引擎,是一种基于模板和数据生成文本(HMLT、电子邮件、配置文件、源代码等)的工具,它不是面向最终用户的,而是一款程序员使用......
  • Thymeleaf入门(一)
    目录Thymeleaf简介模板布局属性优先级注释内联Thymeleaf简介Thymeleaf是一个java的模板引擎,能够处理Html、Xml、Javascript、Css甚至纯文本,类似于Jsp和Freemarker......
  • Thymeleaf入门(二):基本对象
    目录表达式基本对象 基本对象#ctx:上下文对象。是org.thymeleaf.context.IContext或者org.thymeleaf.context.IWebContext的实现#locale:直接访问与java.util.Local......
  • Spring5
    1、Spring1.1、简介Spring:给软件行业带来了春天!2002,首次推出了Spring框架雏形:interface21框架!Spring框架以interface21框架为基础,经过重新设计,不断丰富内涵,于200......