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

相关推荐
哎呦没7 分钟前
Spring Boot与林业产品推荐系统的融合
java·spring boot·后端
gorgor在码农8 分钟前
redis 底层数据结构
java·数据库·redis
Erosion202016 分钟前
JAVA WEB和Tomcat各组件概念
java·tomcat
G丶AEOM19 分钟前
JVM中TLAB(线程本地分配缓存区)是什么
java·jvm
《源码好优多》23 分钟前
基于Java Springboot华为数码商城交易平台
java·开发语言·spring boot
♡喜欢做梦1 小时前
【Java】二叉树:数据海洋中灯塔式结构探秘(下:基本操作)
java·数据结构·算法
Allen Bright1 小时前
Java代码操作Zookeeper(使用 Apache Curator 库)
java·zookeeper·java-zookeeper
云上星空1 小时前
K8s调度器扩展(scheduler)
java·贪心算法·kubernetes
突然好想你之路在脚下2 小时前
Kubernetes(k8s)入门到实战教程
java·容器·kubernetes
博观而约取2 小时前
Jenkins升级到最新版本后无法启动
java·linux·centos·jenkins