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

news/2024/11/25 0:32:50/

前言

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

使用@Cacheable注解实现Redis缓存

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

1)首先

要开启Spring的缓存功能。

// 使用注解
@EnableCaching

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

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

2)其次

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

    // value :缓存组件的名字// key :缓存使用的 key// unless :否定缓存,可以通过 #result 进行判断@Cacheable(value = "home:article", key ="'new'", unless = "#result==null")@Overridepublic 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)@Overridepublic void saveArticle(Article article) {}

http://www.ppmy.cn/news/21575.html

相关文章

最小生成树与最短路径

目录 一.最小生成树 1.1概念 1.2Kruskal算法 1.3Prim算法 二.最短路径 2.11单源最短路径--Dijkstra算法 2.1.2单源最短路径--Bellman-Ford算法 一.最小生成树 1.1概念 连通图中的每一棵生成树&#xff0c;都是原图的一个极大无环子图&#xff0c;即&#xff1a;从其中删去…

C++ 多态

目录 一. 概念 二. 定义与实现 1.构成条件 2.虚函数 3.虚函数的重写 4.协变 5.override 和 final 三. 抽象类 四. 虚函数表 1.单继承虚函数表 2.多继承的虚函数表 一. 概念 通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#x…

Python | 数据类型之集合 | 函数

知识目录一、集合简介1.1 集合的定义1.2 实例二、集合的基本操作三、函数3.1 函数的定义3.2 函数的调用3.3 全局变量和局部变量一、集合简介 1.1 集合的定义 集合&#xff08;set&#xff09;是一个无序的不重复元素序列。 可以使用大括号 { } 或者 set() 函数创建集合&…

4.6 QR分解二:Householder变换

1 Householder reflector Householder反射是这样子的(图片来自瑞典皇家理工学院)&#xff1a;   图中u是长度为1的向量。x是任意向量&#xff0c;H是u的Householder reflector。可见无论x是什么向量&#xff0c;HxHxHx始终除于和u正交的平面上。H和u的关系是&#xff1a; HI…

入职一年,那个准的下班的人,比我先升职了...

最近心态崩了。 和我同期一道进公司的人又升了一级&#xff0c;可是明明大家在进公司时&#xff0c;他不论是学历还是工作经验&#xff0c;样样都不如自己&#xff0c;眼下不过短短的两年时间便一跃在自己的职级之上&#xff0c;这着实让我有几分不甘心。 我想不明白&#xff…

明细打印重影方案

一、问题描述生产上出现明细查询打印业务&#xff0c;部分客户打印数据时出现数据重叠现象&#xff0c;不利于客户使用&#xff0c;影响客户体验。二、问题原因对方户名公司名称字段目前没有限制&#xff0c;按照现有的分页处理机制&#xff0c;如果一页纸出现多个公司名称较长…

什么是单体应用?什么是微服务?

Monolith&#xff08;单体应用&#xff09;&#xff0c; 也称之为单体系统或者是 单体架构 。就是一种把系统中所有的功能、模块、组件等耦合在一个应用中应用最终打成一个(war,jar)包使用一个容器(Tomcat)进行部署&#xff0c;通常一个应用享用一个数据库。 也就是将所有的代码…

C语言进阶——字符函数和字符串函数(上)

目录 一、前言 二、正文 1.求字符串长度 ♥strlen 2.长度不受限制的字符串函数 ♥strcpy ♥strcat ♥strcmp 三、结语 一、前言 一日不见&#xff0c;如隔三秋&#xff1b;几日不见&#xff0c;甚是想念。猜想小伙伴们在平常进行有关字符的练习时遇到有关字符的操作却无从下手…