谷粒商城——缓存——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对应的也就是对应了双写模式。

相关推荐
为了更好的明天而战15 分钟前
Java 中的 ArrayList 和 LinkedList 区别详解(源码级理解)
java·开发语言
JosieBook39 分钟前
【Java编程动手学】Java中的数组与集合
java·开发语言·python
夜阑卧听风吹雨,铁马冰河入梦来1 小时前
Spring AI 阿里巴巴学习
人工智能·学习·spring
N_NAN_N1 小时前
类图+案例+代码详解:软件设计模式----单例模式
java·单例模式·设计模式
weixin_399380691 小时前
k8s一键部署tongweb企业版7049m6(by why+lqw)
java·linux·运维·服务器·云原生·容器·kubernetes
lang201509281 小时前
Reactor ConnectableFlux支持多订阅者
java·网络
R-sz1 小时前
java流式计算 获取全量树形数据,非懒加载树,递归找儿
java·开发语言·windows
Ramos丶1 小时前
【ABAP】 从无到有 新建一个Webdynpro程序
java·前端·javascript
sniper_fandc1 小时前
SpringMVC详解
java·springmvc
TT哇3 小时前
【Java EE初阶】计算机是如何⼯作的
java·redis·java-ee