[Spring Boot]11 使用@Cacheable注解实现Redis缓存

news2024/11/18 20:19:11

前言

为了方便讲解,模拟一个需要使用Redis缓存的场景,比如:一款APP的首页,由于其需要加载的数据量较大,于是决定把首页的部分数据使用Redis进行缓存,举例:比如要缓存首页的文章列表(ArticleList)模块。

使用@Cacheable注解实现Redis缓存

直接操作Redis比较麻烦,集合Spring本身的缓存机制会非常地方便。
@Cacheable是spring自带的缓存注解,因为其支持Redis缓存,所以我们来看下是怎么实现的。

1)首先

要开启Spring的缓存功能。

// 使用注解
@EnableCaching

此注解可以加到Redis配置类里面。
在这里插入图片描述

@Configuration
@EnableCaching
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
        // 配置redisTemplate
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        

2)其次

在文章列表的实现类里面加上@Cacheable注解。
实现类为:ArticleServiceImpl.java

    // value :缓存组件的名字
    // key :缓存使用的 key
    // unless :否定缓存,可以通过 #result 进行判断
    @Cacheable(value = "home:article", key ="'new'", unless = "#result==null")
    @Override
    public List<ArticleListDTO> listArticle() {
        // 取数据库最新的文章数据
        return baseMapper.listArticle();
    }

首页接口直接对外提供此接口即可。

    @ApiOperation(value = "最新文章", notes = "列表")
    @PostMapping("/list")
    public ResponseEntity<List<ArticleListDTO>> listNewArticle() {
        return ResponseEntity.ok(articleService.listArticle());
    }

3)再次

有关缓存更新问题。
可以在Redis里面设置个过期时间进行清空,还有在后台系统对文章进行新增或者修改等操作时,进行缓存的清空。
清空方法为使用@CacheEvict注解:

    @CacheEvict(value = "home:article", allEntries = true)
    @Override
    public void saveArticle(Article article) {
    
    }

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

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

相关文章

Cartesi 2023 年 1 月回顾

2023 年1月 31日&#xff0c;准备迎接令人兴奋的一年&#xff0c;你做好准备了吗&#xff1f; 本月我们围绕游戏领域开展了很多推广活动。主持了我们的第二次游戏开发者社区电话会议&#xff0c; Cartesi 大使 Zach和Ultrachess 开发者 Jesse在 ATX Game Makers 的 game jam 上…

34k*16 薪,3年自动化测试历经3轮面试成功拿下华为Offer....

前言 转眼过去&#xff0c;距离读书的时候已经这么久了吗&#xff1f;&#xff0c;从18年5月本科毕业入职了一家小公司&#xff0c;到现在快4年了&#xff0c;前段时间社招想着找一个新的工作&#xff0c;前前后后花了一个多月的时间复习以及面试&#xff0c;前几天拿到了华为…

background-attachment属性值scroll、fixed和local的区别

首先看菜鸟教程中的解释&#xff1a; scroll&#xff1a;背景图片随着页面的滚动而滚动&#xff0c;默认值 fixed&#xff1a;背景图片不会随着页面的滚动而滚动 local&#xff1a;背景图片会随着元素的内容滚动而滚动 代码结合实例说明 先看代码&#xff1a; 主要包含两个盒子…

MyBatis(二)MyBatis入门程序

一、版本 软件版本&#xff1a; IntelliJ IDEA&#xff1a;2022.1.4Navicat for MySQL&#xff1a;16.0.14MySQL数据库&#xff1a;8.0.30 组件版本&#xff1a; MySQL驱动&#xff1a;8.0.30MyBatis&#xff1a;3.5.10JDK&#xff1a;Java17JUnit&#xff1a;4.13.2Logback…

实景三维模型道路中有很多破损车辆,有没有可以一键修除或去掉的办法?

在超大规模实景三维数据生产中&#xff0c;三维模型质量会受到移动物体这类客观因素的影响&#xff0c;常常造成道路模型严重扭曲以及纹理的错位。 1.三维场景重建中的移动车辆问题 车辆作为日常出行重要的交通工具&#xff0c;会出现在城市场景中的各个角落且不断移动。由于…

【方案】契约锁电子签章在50多个行业的详细应用场景

2022年&#xff0c;契约锁电子签章持续深入政府机关、集团、高校、医院、金融、工程、汽车、能源、食品、检测等各行业中大型组织&#xff0c;在与各类管理软件集成应用中&#xff0c;不断丰富签署场景&#xff0c;实现了300多种业务文件电子签署应用&#xff0c;持续助力组织数…

数据结构与算法:优先级队列(堆)

1.优先级队列 1.定义 前面介绍过队列&#xff0c;队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该中场景下&#xff0c;使用队列显然不…

【Rust】16. 智能指针

智能指针&#xff08;smart pointers&#xff09;是一类数据结构&#xff0c;他们的表现类似指针&#xff0c;但是也拥有额外的元数据和功能引用是一类只借用数据的指针&#xff1b;相反&#xff0c;在大部分情况下&#xff0c;智能指针拥有他们指向的数据 16.1 Box<T>&a…

1610_PC汇编语言_整形的表达

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 前面对于汇编有了一个基本的了解&#xff0c;这一章节主要是看一下汇编视角下的数据表达以及计算方式。 1. 整形会有有符号和无符号两种&#xff0c;一般都是用最高…

快上车,程序狗好用的奇淫技巧

文章目录前言&#x1f34a;缘由⏲️本文阅读时长&#x1f3af;主要目标正文&#x1f9d9;‍♂️1.魔术橡皮擦&#x1f415;2.狗屁不通文章生成器&#x1f95e;3.easypdf&#x1f97d;4.Md2All&#x1f32e;5.CSDN开发助手&#x1f468;‍&#x1f4bb;6.猿如意&#x1f9e9;7.P…

Three.js 初阶基础篇(二)

系列文章目录 我今天又来了更新了&#xff01;&#xff01;&#xff01;今天主要还是回顾一下昨天的一内容&#xff0c;在昨天的基础上又重新梳理了一下&#xff0c;创建动态3D正方体的流程&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 文章目录…

VMware虚拟机安装Linux教程

一、centos7下载 1、centos7的下载 官网下载地址: https://www.centos.org/download/ 2、点击x86_64 二、虚拟机下载与安装 1、VMware虚拟机下载 官网地址: https://www.vmware.com/cn/products/workstation-player.html 打开下载好的.exe文件 安装位置默认在 C 盘下…

【JavaSE】运算符

运算符BIT-3 运算符1. 什么是运算符2. 算数运算符2.1 基本四则运算符2.2 增量运算符2.3 自增/自减运算符3. 关系运算符4. 逻辑运算符&#xff08;重点&#xff09;4.1 逻辑与&&4.2 逻辑或||4.3 逻辑非&#xff01;4.4 短路求值5. 位运算符5.1 按位与&5.2 按位或|5.…

【借助pf4j实现基于spring-boot的插件化开发

借助pf4j实现基于spring-boot的插件化开发背景场景项目地址&结构Demo运行背景 Jenkins、SonarQube等Java实现的Web应用都有插件体系&#xff0c;一般来说都是先从插件市场下载一个插件&#xff0c;然后系统要求重启(某些功能可以不用重启)&#xff0c;插件功能就能在页面上…

SRM-供应商管理系统搭建指南

1、简介1.1、案例简介本文将介绍&#xff0c;如何搭建SRM-供应商管理。1.2、应用场景供应商可注册、提交、修改自己的基本信息及工商信息&#xff0c;上传资质档案、管理产品及样品信息&#xff1b;企业对供应商是否成为合格供应商或淘汰供应商进行准入流程的审批。2、设置方法…

软件设计(四)--MTBF、MTTF、MTTR

软件设计&#xff08;三&#xff09;https://blog.csdn.net/ke1ying/article/details/128808681 31、结构化开发中&#xff0c;过程设计 主要包含对数据结构和算法的设计。 体系结构设计&#xff1a;定义软件的主要结构元素及其关系。 数据设计&#xff1a;基于实体联系图&a…

高压放大器在多波长干涉相位同步解调方法研究中的应用

实验名称&#xff1a;基于激光相位分立调制的多波长干涉相位同步解调方法研究 研究方向&#xff1a;激光测量 测试目的&#xff1a; 在长度测量中&#xff0c;绝对距离测量&#xff08;ADM&#xff09;可实现高精度、大范围和瞬时距离测量&#xff0c;与相对位移测量&#xff0…

Dynamsoft Barcode Reader 9.6.1 for NET Crack

Dynamsoft Barcode Reader以每分钟 500 的速度扫描条码 Dynamsoft Barcode Reader具有灵活 API 的强大条码扫描器 SDK Dynamsoft Barcode Reader无论它是模糊的、扭曲的、黑暗的、遥远的还是移动的&#xff0c;我们都可以扫描它。快速地。 业界最快扫描解码&#xff0c;适用于…

一次线上超时问题,看Ribbon 超时机制

一、线上问题 项目上线后&#xff0c;一段时间内运行都没有问题&#xff0c;突然运营人员说&#xff0c;某个接口一直失败。遂查看线上日志&#xff1a; spring-cloud-openfeign 通过服务名调用的&#xff0c;服务发现没有找到可用服务实例&#xff1f;这是第一反应&#xff0…

如何添加PDF书签?学会这三种方法

随着PDF文档和书籍已经成为我们工作和生活中不可或缺的一部分&#xff0c;许多PDF书签制作器和编辑器应运而生。了解使用 Windows、Mac 兼容或在线软件免费将书签添加到 PDF的多种方法。 什么是 PDF 书签&#xff1f; PDF 文件中的书签与印刷书籍中的纸质或织物书签的工作方式…