谷粒商城——缓存——SpringCache

1. 配置使用

首先需要导入相关的依赖:

复制代码
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

随后在配置文件中进行配置:

复制代码
spring:
    cache:
        type: redis
        cache-names: myCache

最后在启动类中加入@EnableCaching注解。

2.相关注解操作

2.1@Cacheable

@Cacheable(value={cacheName1,cacheName2},key="'keyname'")(放在相应服务层实现方法上方):表示该方法的结果需要缓存,如果缓存中已存在该结果,方法就不会调用,如果缓存没有该结果,就会调用该方法,并将结果存储在缓存中。cacheNameX表示将结果放在那些缓存中。

当我们缓存中不存在相应的返回数据时,会自动将返回数据加入缓存中:

2.2@CacheEvict

在此之前需要介绍一下缓存更新(也叫缓存一致性)的两种模式:当对缓存中数据进行修改时,可以用双写模式或失效模式来更新缓存。双写模式指的是将修改后的数据就是写入数据库之后再去写缓存。失效模式指的是将修改后的数据就是写入数据库之后删除对应缓存,当有用户查询时再重新建立新的缓存。

当我们在某个服务层的实现类方法(这个方法一般是用来修改缓存中的一些数据的)中上方加入@CacheEvict(value="cacheName",key="'keyName'")注解。这样当我们调用这个方法的时候,会自动删除名为cacheName缓存下键为keyName对应的缓存值(对应了失效模式)。

如果我们希望进行批量删除(因为之前@Cacheable方法中可能会将同一数据放入不同的缓存),需要修改注解变为:(@CacheEvict中2value不能像@Cacheable添加多个缓存名称)

类比于@CacheEvict,@CachePut对应的也就是对应了双写模式。

相关推荐
mingo_敏10 分钟前
DeepAgents : 后端(Backends)
java·开发语言
霸道流氓气质11 分钟前
SpringBoot中事务内同步处理 + 事务后异步调用外部系统的通用模式示例
java·spring boot·后端
霸道流氓气质24 分钟前
Spring 事务传播机制与 REQUIRES_NEW
java·数据库·spring
BerryS3N36 分钟前
Java 后端转型大模型:Demo 能跑不等于能上线
java·人工智能·python·java后端·spring ai·langchain4j·大模型转型
心机之蛙qee39 分钟前
Docker Compose 多容器编排
java·docker·容器
秋田君1 小时前
QT_QColorDialog颜色对话框
java·数据库·qt
IT小盘2 小时前
09-使用Redis保存大模型多轮对话上下文
数据库·redis·缓存
用户91366296220122 小时前
ViewModelScope 简介与使用
java
上海安当技术2 小时前
老系统零改造接入:旁路代理统一认证实战
java·servlet·架构·kubernetes·jenkins
青山木2 小时前
Hot 100 --- 组合总和
java·数据结构·算法·leetcode