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

假如我们是一个商家,我们在管理端 设置好菜品之后,每次不同的用户访问我们的菜品,都要查询数据库,当访问者多的时候,会造成数据库的卡顿,所以使用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.mzph.cn/diannao/4711.shtml

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

相关文章

机器学习:基于Sklearn框架,使用逻辑回归对由心脏病引发的死亡进行预测分析

前言 系列专栏:机器学习:高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目,每个项目都处理一组不同的问题,包括监督和无监督学习、分类、回归和聚类,而且涉及创建深度学…

Linux网络编程---多路I/O转接服务器(一)

多路I/O转接服务器 多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想是,不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。 主要使用的方法有三种:select、poll、epoll 一、select多路IO转接 让内核去…

js实现倒计时效果

实现效果 实现代码 const computingTime startTime > {// 目标日期const targetDate new Date(startTime).getTime();// 每秒更新倒计时const timer setInterval(function() {// 当前时间const now new Date().getTime();// 距离目标时间的毫秒数const distance targe…

vue3中使用animate.css

在vue3中使用animate.css 20240428_093614 引入:npm install animate.css --save main.js注册:import ‘animate.css/animate.min.css’ 注意:import ‘animate.css’ 不适合在vue3项目 使用:class“animate__animated 动画名称”…

Matlab实现CNN-BiLSTM模型,对一维时序信号进行分类

1、利用Matlab2021b训练CNN-BiLSTM模型,对采集的一维时序信号进行分类二分类或多分类 2、CNN-BiLSTM时序信号多分类执行结果截图 训练进度: 网络分析: 指标变化趋势: 代码下载方式(代码含数据集与模型构建&#xff0…

Vue3 v3.4之前如何实现组件中多个值的双向绑定?

文章目录 基础代码1. watch2. computed&#xff08;推荐&#xff09; 官方给的例子是关于el-input的&#xff0c;如下。但是input不是所有组件标签都有的属性啊&#xff0c;有没有一种通用的办法呢&#xff1f; <script setup> defineProps({firstName: String,lastName…

【调研分析】目标在不同焦距和距离下与画面的比例(2.8-3.6-4.0)

之前在做项目中需要极度优化效果和代码运行速度 为此测试了同一个目标在不同焦距和距离下与画面的比例&#xff0c;从而可以方便在指定大小情况下搜索目标 NOTE: 这是早期滑窗检测做目标检测下的工作

浅谈OpenCV 粗略计算工件轮廓面积和外接圆直径(Emgu.CV)

前言 最近领导在做库房工具管理这块的功能&#xff0c;希望能集成OpenCV 粗略的计算出工具的长度&#xff0c;以方便用户再归还工具的时候&#xff0c;提示用户该放在那种尺寸的盒子里面&#xff0c;这便是这篇文章的由来。 我们的系统是基于.net开发的&#xff0c;所以采用的是…

android 修改最低亮度值,不要太暗

/frameworks/base/core/java/com/android/internal/display/BrightnessSynchronizer.java 修改最低亮度&#xff0c;不能太暗看不见 /** * Converts between the int brightness system and the float brightness system. */ public static float brightnessInt…

分布式系统事务一致性解决方案(基于事务消息)

参考&#xff1a;https://rocketmq.apache.org/zh/docs/featureBehavior/04transactionmessage/ 文章目录 概要错误的方案方案一&#xff1a;业务方自己实现方案二&#xff1a;RocketMQ 事务消息什么是事务消息事务消息处理流程事务消息生命周期使用限制使用示例使用建议 概要 …

MATLAB语音信号分析与合成——MATLAB语音信号分析学习资料汇总(图书、代码和视频)

教科书&#xff1a;MATLAB语音信号分析与合成&#xff08;第2版&#xff09; 链接&#xff08;含配套源代码&#xff09;&#xff1a;https://pan.baidu.com/s/1pXMPD_9TRpJmubPGaRKANw?pwd32rf 提取码&#xff1a;32rf 基础入门视频&#xff1a; 视频链接&#xff1a; 清…

每天一个数据分析题(二百九十九)

用于描述各个维度项的表现水平与标准维度项的表现水平之间的差异程度的是哪种指标计算方法&#xff1f; A. 标准比 B. 均比 C. 目标比 D. 基准比 题目来源于CDA模拟题库 点击此处获取答案 cda数据分析考试&#xff1a;点击进入

急急急!微信朋友圈删除了怎么恢复?

微信朋友圈是我们与朋友分享生活点滴的重要平台&#xff0c;但有时候微信出现异常&#xff0c;导致我们编辑好的朋友圈被删除了&#xff0c;这时候该怎么办呢&#xff1f; 幸运的是&#xff0c;微信提供了一种简单的方式来恢复已删除的朋友圈内容。微信朋友圈删除了怎么恢复&a…

利用二叉检索树将文章中的单词建立索引(正则表达式)

知识储备 链接: 【二叉检索树的实现——增删改查、读取命令文件、将结果写入新文件】 1、正则表达式的处理 &#xff08;1&#xff09;r’前缀的作用 r’前缀的用于定义原始字符串&#xff0c;特点是不会处理反斜杠\作为转义字符 &#xff08;2&#xff09;正则表达式中元…

macos如何安装Tesseract软件and常规应用及问题处理

问题在线过程: 今天在mac系统上安装tesseract持续失败,整了很久终于把这个问题解决了,所以希望通过这篇文章分享给大家: 首先,我在用 brew install tesseract 或 brew install --build-from-source tesseract 一直报错,报错内容如下: Warning: You are using macO…

12-python编写暴力破解poc

一、爆破MD5 场景&#xff1a;已知MD5加密字符串&#xff0c;如何得知明文&#xff1f; 解决方案&#xff1a; 算法碰撞&#xff0c;一串128位的MD5&#xff08;32位16进制&#xff09;其组合数量 字典碰撞&#xff0c;给定一个字典文件&#xff0c;读取里面的密码明文&…

Android system — 链接器命名空间(linker namespace)源码分析

Android system — 链接器命名空间&#xff08;linker namespace&#xff09;源码分析 1. 源码分析2. do_dlopen3. find_library_internal3.1 find_loaded_library_by_soname3.2 load_library3.3 find_library_in_linked_namespace 1. 源码分析 在前一篇文章Android system — …

场外个股期权开户新规及操作方法

场外个股期权开户新规 场外个股期权开户新规主要涉及对投资者资产实力、专业知识、风险承受能力和诚信记录的要求。以下是根据最新规定总结的关键要点&#xff1a; 来源/&#xff1a;股指研究院 资产门槛&#xff1a;投资者需具备一定的资产实力&#xff0c;确保在申请开户前…

【Linux】文件打包解压_tar_zip

文章目录 &#x1f4d1;引言&#xff1a;一、文件打包压缩1.1 什么是文件打包压缩&#xff1f;1.2 为什么需要文件打包压缩&#xff1f; 二、打包解压2.1 zip2.2 unzip2.3 tar指令 &#x1f324;️全篇小结&#xff1a; &#x1f4d1;引言&#xff1a; 在Linux操作系统中&#…

go圣经 ——方法

这里只是记录了自己学过一遍但是在圣经&#xff08;狼吞虎咽&#xff09;中又看到的新鲜玩意 我们又称之为选择器 package mainimport "fmt"type Rect struct {width, height float64 }// 定义一个方法来计算矩形的面积 func (r Rect) Area() float64 {return r.wi…