使用SpringCache实现Redis缓存

news2025/1/18 10:46:00

目录

一 什么是Spring Cache

二 Spring Cache 各注解作用

        ①EnableCaching

        ②Cacheable

        ③CachePut

        ④CacheEvict

三实现步骤

①导入spring cache依赖和Redis依赖

②配置Redis连接信息

③在启动类上加上开启spring cache的注解 

④ 在对应的方法上加上需要的注解


一 什么是Spring Cache

        spring cache是一个框架,实现了基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能。

        而且spring cache提供了多种缓存的实现,例如:

        ①EHCahe

        ②Caffeine

        ③Redis

        想用那种缓存只需要导入对应的jar包即可。

        本次我们使用Redis缓存作为用例。

二 Spring Cache 各注解作用

        ①EnableCaching

                开启缓存注解功能 , 通常加在启动类上。

        ②Cacheable

在执行方法前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有数据,则调用方法并将方法返回值放到缓存中。

        ③CachePut

将方法返回值放到缓存中

        ④CacheEvict

将一条或者多条数据从缓存中删除

三实现步骤

①导入spring cache依赖和Redis依赖

<!--        spring cache缓存-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
<!--        使用redis缓存-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

②配置Redis连接信息

 这是在yml文件中配置的

③在启动类上加上开启spring cache的注解 

@SpringBootApplication
@MapperScan("com.fs.mapper")
@Slf4j
@EnableCaching  //开启springCache缓存
public class user_managementApplication {
    public static void main(String[] args) {

        SpringApplication.run(user_managementApplication.class , args);
        log.info("server is start...");

    }
}

④ 在对应的方法上加上需要的注解

        例如:我在下面这个新增用户的方法上,需要把返回的用户存入缓存中去

    @PutMapping("/add")
    @CachePut(cacheNames = "userCache" , key = "#user.uid")  //比如uid为3 ,那么得到存入redis的可以为:“userCache::3”
    public Result addUser(@RequestBody User user){
        log.info("进入新增用户:{}",user);
        userService.addUser(user) ;
        return Result.success() ;
    }

这里需要注意一点,因为我这个方法并没有返回用户对象,返回的是一个Result , 所以存储的也只是一个Result。

另外,这个uid是主键回显的,因为我这里插入使用的mp自带的,所以mp会自己帮我把id回显,我只需要从user中获取就行了,如果你是用mybatis自己写的sql语句,那么你需要自己设置主键回显,可以在mapper接口层使用如下注解:

    @Options(useGeneratedKeys = true , keyProperty = "id") //把主键id映射到“id”返回
    @Update("update tb_user set is_can_login=0 where  uid=#{uid}")
    void updateStatueByUid(Integer uid);

最后我们可以看见数据成功缓存到了redis,并且key也是我们设置好的。

其他还有很多注解,这里就不一一做示范了,根据自己的需要使用不同注解即可。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1853245.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚拟机IP地址频繁变化的解决方法

勾八动态分配IP&#xff0c;让我在学习redis集群的时候&#xff0c;配置很多的IP地址&#xff0c;但是由于以下原因导致我IP频繁变动&#xff0c;报错让我烦恼&#xff01;&#xff01;&#xff01;&#xff01; 为什么虚拟机的IP地址会频繁变化&#xff1f; 虚拟机IP地址频繁…

【Python机器学习】利用t-SNE进行流形学习

虽然PCA通常是用于变换数据的首选方法&#xff0c;使你能够用散点图将其可视化&#xff0c;但这一方法的性质限制了其有效性。 有一类用于可视化的算法叫做流形学习算法&#xff0c;它允许进行更复杂的映射&#xff0c;通常也可以给出更好的可视化。其中特别有用的一个就是t-S…

MySQL学习笔记-进阶篇-锁

概述 概念 全局锁 表级锁 介绍 表锁 读锁 只允许加锁客户端读操作禁止写操作。允许其他客户端的读操作&#xff0c;阻塞其他客户端的写操作。 lock tables xxx read unlock tables&#xff1b; 写锁 允许加锁客户端的读写操作。既阻塞其他客户端的读&#xff0c;又阻塞其他客…

ARM功耗管理框架之PPU

安全之安全(security)博客目录导读 思考&#xff1a;功耗管理框架&#xff1f;SCP&#xff1f;PPU&#xff1f;LPI&#xff1f;之间的关系&#xff1f;如何配合&#xff1f; 目录 一、功耗管理框架中的PPU 二、PPU的结构与连接关系 三、PPU操作模式和电源模式及其之间的转…

尹会生:从零开始部署翻译助手【总结】

安装docker安装dify 工具准备 Docker 简介&#xff1a;可以在不同电脑上运行相同的容器&#xff0c;类似于把软件装在便携箱子里&#xff0c;随身携带。 优点&#xff1a;安装Docker可以简化部署过程&#xff0c;避免安装许多依赖性软件。 网址&#xff1a;https://www.docke…

分布式定时任务系列10:XXL-job源码分析之路由策略

传送门 分布式定时任务系列1&#xff1a;XXL-job安装 分布式定时任务系列2&#xff1a;XXL-job使用 分布式定时任务系列3&#xff1a;任务执行引擎设计 分布式定时任务系列4&#xff1a;任务执行引擎设计续 分布式定时任务系列5&#xff1a;XXL-job中blockingQueue的应用 …

SLAM ORB-SLAM2(27)词袋模型

SLAM ORB-SLAM2(27)词袋模型 1. 词袋模型1.1. 词汇树1.2. 逆向索引表1.3. 逆向索引表2. 词袋向量3. 匹配候选帧3.1. 找出和当前帧具有公共单词的所有关键帧3.2. 找出和当前帧最多公共单词的关键帧3.3. 剔除共享单词数较少的关键帧3.4. 计算关键帧的共视关键帧组的总得分3.5. …

CentOS系统查看版本的各个命令

cat /etc/centos-release 查看CentOS版本 uname -a 命令的结果分别代表&#xff1a;当前系统的内核名称、主机名、内核发型版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称 cat /proc/version 命令用于查看Linux内核的版本信息。执行该命令后&#xf…

Ubuntu/Linux系统安装JDK1.8(带jdk1.8资源和操作教程)

文章目录 前言一、JDK1.8下载二、上传三、安装四、配置环境变量五、查看总结 前言 &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;Ubuntu/Linux jdk1.8安装包&#xff…

JetBrains PyCharm 2024 mac/win版编程艺术,智慧新篇

JetBrains PyCharm 2024是一款功能强大的Python集成开发环境(IDE)&#xff0c;专为提升开发者的编程效率和体验而设计。这款IDE不仅继承了前代版本的优秀特性&#xff0c;还在多个方面进行了创新和改进&#xff0c;为Python开发者带来了全新的工作体验。 JetBrains PyCharm 20…

初阶《操作符详解》 3. 移位操作符

3. 移位操作符 <<  左移操作符 >>  右移操作符 注&#xff1a;移动的是二进制位&#xff0c;移位操作符的操作数只能是整数。 一个存储的二进制码分原码、反码、补码 1.十进制数据的二进制表现形式就是原码&#xff0c;原码最左边的一个数字就是符号位&#xff…

leetcode 二分查找·系统掌握

题目&#xff1a; 题解&#xff1a; 在阶梯数达到某一值后已有的硬币数量就小于了阶梯可以装的硬币数量&#xff0c;根据题意可以使用~10~泛型查找出最后一个可以被填满的阶梯。对于这类型可以二分答案的题目关键在于二分答案的上下界&#xff0c;本题的下界就是1上界就是硬币…

Redis-数据类型-Set(不允许重复)

文章目录 1、查看redis是否启动2、通过客户端连接redis3、切换到2数据库4、给key指定的set集合中存入数据&#xff0c;set会自动去重5、返回可以指定的set集合中所有的元素6、返回集合中元素的数量(set cardinality)7、检查当前指定member是否是集合中的元素8、从集合中删除元素…

[JS]数据类型

介绍 在计算中一切事物都是数据, 为了提高数据的存储和使用效率, 要对数据进行类型的分类 栈(操作系统): 由操作系统自动分配释放函数的参数值, 局部变量的值等, 其操作方式类似于数据结构中的栈; 基本数据类型存放在栈里面string, number, boolean, undefined, null 堆(操作…

C++STL 初阶(5)vector的简易实现(上)

不同于string只实现一个最简单的版本&#xff0c;vector在此处我们要实现的是模版类&#xff0c;类模版的声明和定义分离非常不方便&#xff08;会在链接时报错&#xff09;&#xff0c;所以我们都只在一个vector.h下去实现声明和定义。后续我们提及到的库里面实现的vector也是…

UEC++ 虚幻5第三人称射击游戏(一)

UEC 虚幻5第三人称射击游戏&#xff08;一&#xff09; 创建一个空白的C工程 人物角色基本移动 创建一个Character类添加一些虚幻商城中的基础动画 给角色类添加Camera与SPringArm组件 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category "SpringArm")clas…

正点原子rk3588烧录linux和安卓镜像

1、烧录 Linux buildroot 系统镜像 1.1 进入 Loader 模式&#xff1a; 按住开发板上的 V&#xff08;音量&#xff09;按键不松&#xff0c;给开发板 上电或复位&#xff0c;此时烧录工具会提示&#xff1a;发现一个 LOADER 设备&#xff0c;表示开发板此时已经处于 Loader 模…

什么是深度神经网络?与深度学习、机器学习、人工智能的关系是什么?

什么是深度神经网络&#xff1f;与深度学习、机器学习、人工智能的关系是什么&#xff1f; &#x1f916;什么是深度神经网络&#xff1f;与深度学习、机器学习、人工智能的关系是什么&#xff1f;摘要引言正文内容1. 什么是深度神经网络&#xff1f;&#x1f9e0;1.1 深度神经…

IDEA Plugins中搜索不到插件解决办法

IDEA中搜不到插件有三种解决方案&#xff1a; 设置HTTP选项&#xff0c;可以通过File->Settings->Plugins->⚙->HTTP Proxy Settings进行设置 具体可参考这篇博文&#xff1a;IDEA Plugins中搜索不到插件解决办法本地安装&#xff0c;ile->Settings->Plugin…

Linux下Cmake安装或版本更新

下载Cmake源码 https://cmake.org/download/ 找到对应的版本和类型 放进linux环境解压 编译 安装 tar -vxvf cmake-3.13.0.tar.gz cd cmake-3.13.0 ./bootstrap make make install设置环境变量 vi ~/.bashrc在文件尾加入 export PATH/your_path/cmake-3.13.0/bin:$PAT…