Springboot自定义注解+aop实现redis自动清除缓存功能

ops/2024/9/25 15:20:22/

假如我们是一个商家,我们在管理端 设置好菜品之后,每次不同的用户访问我们的菜品,都要查询数据库,当访问者多的时候,会造成数据库的卡顿,所以使用redis进行缓存,这样只需要读取一次数据库,就可以的大大减少数据库的访问压力,但是当我们 管理端对某个菜品进行删除的时候,用户再次访问,还会访问到我们redis 数据库的数据,这时候就会出现bug,所以我们在删除菜品的时候,也应该把对应的redis的菜品缓存数据删除

 但是我们执行删除修改增加菜品的时候,统一设置删除缓存数据,但是我们一个个的调用封装的删除缓存的方法太麻烦了,我们不妨直接使用aop+注解的形式统一进行缓存删除的管理

1. 自定义注解.

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Deleterediscache {
}

2.使用aop对删除增加修改菜品的方法进行 统一删除缓存

@Aspect
@Slf4j
@Component
public class DeleteRedisCache {@AutowiredRedisTemplate redisTemplate;@Pointcut("execution(* com.sky.mapper.*.*(..))&& @annotation(com.sky.annotation.Deleterediscache)")
public void pointcut(){}@After("pointcut()")public void deleteRedisCache(JoinPoint joinPoint){log.info("开始清理redis缓存");//获取方法签名MethodSignature signature = ( MethodSignature)joinPoint.getSignature();//获取方法签名的注解名称Deleterediscache deleterediscache = signature.getMethod().getAnnotation(Deleterediscache.class);if(deleterediscache !=null){Set keys = redisTemplate.keys("dish_*");redisTemplate.delete(keys);}log.info("redis缓存清理完毕");}}


http://www.ppmy.cn/ops/29291.html

相关文章

【数据结构】链表专题3

前言 本篇博客我们继续来讨论链表专题,今天的链表算法题是经典中的经典 💓 个人主页:小张同学zkf ⏩ 文章专栏:数据结构 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 目录 1.判断链表是否…

Redis基本命令

目录 一、包含String、Set数据类型的基本命令 1、添加一个键值对 2、获取key所关联的字符串值 3、同时设置多个key-value 4、获取多个key对应的值 运行结果 5、将给定的value追加到原值的末尾 追加后效果 6、删除单个key 7、同时删除多个key 8、查询包含某个字符的k…

MySql 主从同步-在原来同步基础上增加历史数据库

在MySql已经主从同步的后,由于有新的需求再增加1个历史数据库,要改原来的1个变成现在的2个数据库。在官网并没有找到类似的场景(官方同步多个数据是从一开始就设置,不是后续增加的),只能结合以往的经验自己…

【论文浅尝】Large Language Models for Generative Information Extraction: A Survey

本文对生成式IE的LLM进行了全面的探索。使用两种分类法对现有的代表性方法进行分类: (1)众多IE子任务的分类法,旨在对可以使用llm单独或统一提取的不同类型的信息进行分类; (2)学习范式分类法,对利用llm生成IE的各种新方法进行分类。 Preliminaries o…

【Python】使用 OpenCV 读取深度图,并转换深度图可视化显示

OpenCV 提供了多种工具来处理深度图数据,包括读取、显示、滤波、转换以及利用深度信息进行三维重建等。 1. 读取 使用IMREAD_UNCHANGED以保留深度信息 2. 转换 convertScaleAbs: 将深度图转换为更直观的表示形式,例如将其缩放到0-255范围以便显示。 …

java线上问题排查之磁盘和网络查看分析(二)

一、磁盘&IO df -lh 查看磁盘使用情况 Filesystem:文件系统 Size:容量 Used:已用 Avail:可用 Use%:已用百分比 Mounted on:挂载点 二、网络 查看TCP连接情况 常见问题 tcp队列溢出 netstat -s |e…

嵌入式前后台(Bare-Metal RTOS-Like)架构详解

前后台(Bare-Metal RTOS-Like)架构 在嵌入式系统开发中,针对资源有限的STM32微控制器,前后台(Bare-Metal RTOS-Like)架构是一种轻量级的实时性设计方法,它模拟了实时操作系统(RTOS&…

salesforce 如何访问lwc组件

访问lwc有哪些途径呢? Action ButtonTabAura use lwc(拓展)如何区分是新建页面还是编辑页面 Action Button xml文件中要配置tab<?xml version"1.0" encoding"UTF-8"?> <LightningComponentBundle xmlns"http://soap.sforce.com/2006/04/…