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

相关推荐
折翅嘀皇虫5 分钟前
fastdds.type_propagation 详解
java·服务器·前端
小年糕是糕手7 分钟前
【C++】类和对象(二) -- 构造函数、析构函数
java·c语言·开发语言·数据结构·c++·算法·leetcode
豐儀麟阁贵10 分钟前
8.2异常的抛出与捕捉
java·开发语言·python
老华带你飞11 分钟前
社区养老保障|智慧养老|基于springboot+小程序社区养老保障系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序·毕设·社区养老保障
码龄3年 审核中12 分钟前
Linux record 03
java·linux·运维
q***876014 分钟前
springboot下使用druid-spring-boot-starter
java·spring boot·后端
程序员西西15 分钟前
SpringBoot无感刷新Token实战指南
java·开发语言·前端·后端·计算机·程序员
东南门吹雪16 分钟前
Spring的Bean相关
java·spring·bean·aop
q***697716 分钟前
Y20030018基于Java+Springboot+mysql+jsp+layui的家政服务系统的设计与实现 源代码 文档
java·spring boot·mysql
摇滚侠18 分钟前
2025最新 SpringCloud 教程,Nacos-配置中心-数据隔离-动态切换环境,笔记18
java·笔记·spring cloud