Springboot 中的 redis 缓存

1 篇文章 0 订阅
1 篇文章 0 订阅

一。说明

1.springboot 中的缓存遵循 JSR107 规范。
2.spring 中 从 3.1 版本开始,实现了 JSR107规范,进行了缓存的抽象。
3.springboot 中提供了几个方便的注解用来处理缓存,如@Cacheable ,@CacheEvict等。
4.如果不设置缓存类型,默认情况下,会缓存到 JVM中 ,以ConcurrentHashMap 的方式进行缓存。
5.springboot中使用缓存,不引入 spring-boot-starter-cache依赖也可以正常使用。

二。springboot中使用缓存(redis)

1.引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>2.3.0.RELEASE</version>
</dependency>

2.在 application.yml 中指定 缓存方式

如果是多环境的话,可以在 application.yml 中指定

spring:
  cache:
    type: redis

3.在 application.yml 中指定 redis 连接信息

如果是多环境的话,可以在 application-dev.yml 中指定

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: my_password_123456
    jedis:
      pool:
        max-active: 8
        max-wait: -1
        max-idle: 500
        min-idle: 0
    lettuce:
      shutdown-timeout: 0
    database: 1

4.在启动类上开启缓存

@EnableCaching

在这里插入图片描述

5.注解的使用

说明

  实际在使用业务缓存的时候,key的形式一般是 缓存前缀+业务id。缓存前缀用来表示是哪类业务,而id 表示是哪个业务数据。这种分类存储的方式使整体存储的数据结构更清晰。比如 student::2001,表示学号为1的学生;employee::6001,表示工号为 6001 的员工。
  cacheNames 的值实际上就是缓存前缀,key 的值就是 业务id。

1.读取缓存

@Cacheable

如果缓存不存在,则先执行一遍查询数据的逻辑,然后添加到缓存
在这里插入图片描述

2.更新缓存

@CachePut

注意:更新的缓存的值,是return的值,所以,即使是insert/update操作,在最后也要return。
在这里插入图片描述

3.删除缓存

@CacheEvict

注意:beforeInvocation 参数 表示 是否在执行方法的方法体之前删除缓存,beforeInvocation = true 表示是在执行方法体之前删除缓存。
在这里插入图片描述

三。缓存不生效问题的解决

如果设置了缓存,但是缓存不生效。可以检查以下几个地方:
(1)是否在 application.yml 中设置了缓存类型
如:spring.cache.type = redis
(2)是否在启动类上开启了缓存
在这里插入图片描述
(3)如果缓存的是对象的话,对象应该进行序列化。

(4)被直接调用的普通方法上添加注解不生效,如下:

定义方法 getValue ,并添加 注解
在这里插入图片描述
此时show方法中直接调用的 getValue方法
在这里插入图片描述
这时如果在postman中请求 /show,是不会向redis中添加缓存的,如图:
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值