redis — SpringBoot集成Redis Cache (三)

13 篇文章 0 订阅
11 篇文章 0 订阅

Spring Boot集成Redis Cache

从 Spring3 开始定义 Cache 和 CacheManager 接口来统一不同的缓存技术; Cache 接口为缓存的组件规范定义,包含缓存的各种操作集合; Cache 接口下 Spring 提供了各种缓存的实现; 如 RedisCache,EhCacheCache ,ConcurrentMapCache 等;

1. 核心 API

  • Cache
    缓存接口,定义缓存操作。实现有:RedisCache、EhCacheCache、ConcurrentMapCache 等
  • CacheManager
    缓存管理器,管理各种缓存(cache)组件
1.1 @Cacheable

主要针对方法配置,能够根据方法的请求参数对其进行缓存,Cacheable 执行流程:

  • 方法运行之前,按照 cacheNames 指定的名字先去查询 Cache 缓存组件
  • 第一次获取缓存如果没有 Cache 组件会自动创建
  • Cache 中查找缓存的内容,使用一个 key,默认就是方法的参数
  • key 是按照某种策略生成的;默认是使用 keyGenerator 生成的,这里使用自定义配置
  • 没有查到缓存就调用目标方法;
  • 将目标方法返回的结果,放进缓存中

@Cacheable 注解属性

  • cacheNames/value:指定方法返回结果使用的缓存组件的名字,可以指定多个缓存key:缓存数据使用的 keykey/keyGenerator:key 的生成器,可以自定义
  • cacheManager:指定缓存管理器
  • cacheResolver:指定缓存解析器
  • condition:指定符合条件的数据才缓存
  • unless:否定缓存;当 unless 指定的条件为 true,方法的返回值就不会被缓存sync:是否使用异步模式
1.2 @CacheEvict

清除缓存

  • CacheEvict:缓存清除
  • key:指定要清除的数据
  • allEntries = true:指定清除这个缓存中所有的数据
  • beforeInvocation = false:方法之前执行清除缓存,出现异常不执行
  • beforeInvocation = true:代表清除缓存操作是在方法运行之前执行,无论方法是否出现异常,缓存都清除
1.3 @CachePut

保证方法被调用,又希望结果被缓存。 与@Cacheable 区别在于是否每次都调用方法,常用于更新,写入。
CachePut:执行方法且缓存方法执行的结果,修改了数据库的某个数据,同时更新缓存;执行流程:

  • 先调用目标方法
  • 然后将目标方法的结果缓存起来t
1.4 @EnableCaching

开启基于注解的缓存

1.5 keyGenerator

缓存数据时 key 生成策略

1.6 @CacheConfig

统一配置本类的缓存注解的属性

2.项目实战

2.1 引入依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.2 配置Redis

在application.yml配置一下内容

spring:
  redis:
    host: 192.168.174.100
    port: 6379
    database: 0
    password:
    timeout: 1000
    jedis:
      pool:
        max-active: 200
        max-wait: -1
        max-idle: 10
        min-idle: 0
  cache:
    type: redis
2.3 启动启动类注解开启 Cache
@SpringBootApplication
@EnableCaching  //开启缓存
public class RedisApplication {
    public static void main(String[] args) {
        SpringApplication.run(RedisApplication.class, args);
    }
}
2.4 实现及测试

分别对上述的注解进行测试,使用postman。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RachelHwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值