当前位置: 首页 > news >正文

SpringBoot 监听Redis key过期回调

SpringBoot 监听Redis key过期回调

场景

Spring boot实现监听Redis key失效事件可应对某些场景例如:处理订单过期自动取消、用户会员到期…

  1. 开启Redis键过期回调通知
    Redis默认是没有开启键过期监听功能的,需要手动在配置文件中修改。
    
  • Linux操作系统
    • 修改redis安装目录下的redis.conf配置文件,然后找到notify-keyspace-events Ex这行代码,默认是注释掉的,取消注释即可(即删除掉前面的#)。
    • 也有一种情况是没有这一行的,这种情况下直接把这一行添加上去即可。
    • 然后重启redis。
  • Windows操作系统
    • 在安装目录下找到redis.windows.conf和redis.windows-service.conf两个文件,然后分别修改这两个文件中的notify-keyspace-events Ex字段,取消注释即可。
    • 然后重启redis,Windows重启命令为redis-server.exe --service-start。
  1. Java代码实现监听回调
  • 添加Redis键过期监听配置
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;/*** Description: redis 回调监听配置类* 1。需要打开redis.conf配置类,打开回调监听配置 #开启key 过期回调监听 notify-keyspace-events Ex* 2。编写回调监听配置类RedisListenerConfig* 3。重写失效回调方法 RedisKeyExpirationListerner**/@Configuration
public class RedisListenerConfig {@BeanRedisMessageListenerContainer container(RedisConnectionFactory factory){RedisMessageListenerContainer container=new RedisMessageListenerContainer();container.setConnectionFactory(factory);return container;}
}
  • 创建监听类
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;@Component
public class KeyExpiredListener extends KeyExpirationEventMessageListener {public KeyExpiredListener(RedisMessageListenerContainer listenerContainer) {super(listenerContainer);}/*** 使用该方法监听,当Redis的key失效的时候执行该方法*/@Overridepublic void onMessage(Message message, byte[] pattern) {// 过期的KeyString expiraKey = message.toString();System.out.println("该Key已失效:"+expiraKey);}}
3.指定Rediskey 设置值及其过期时间

Redis Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

相关文章:

SpringBoot 监听Redis key过期回调

SpringBoot 监听Redis key过期回调 场景 Spring boot实现监听Redis key失效事件可应对某些场景例如:处理订单过期自动取消、用户会员到期… 开启Redis键过期回调通知 Redis默认是没有开启键过期监听功能的,需要手动在配置文件中修改。Linux操作系统 修…...

蓝桥杯C/C++VIP试题每日一练之回形取数

💛作者主页:静Yu 🧡简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者 💛社区地址:前端知识交流社区 🧡博主的个人博客:静Yu的个人博客 🧡博主的个人笔记本:前端面试题 个人笔记本只记录前端领域的面试题目,项目总结,面试技…...

四控、三管、一协调

四控指的是进度控制,质量控制,成本控制,变更控制。三管指的是合同管理,安全管理,资料管理。一协调指的是协调甲方,总包及设备材料供应方的关系。信息系统工程监理是指依法设立且具备相应资质的信息系统工程…...

jdk19下载与安装教程(win10)超详细

一、下载安装步骤 1、官网下载还需要注册,可以点【我的网盘】目录下载,目录也有其它低版本的,如果有需要大家根据需要自行选择。 2、下载后直接点击安装程序,点击【运行】。这里我使用的是64位的。 3、点击【下一步】。 4、默认安…...

来来来,手摸手写一个hook

hello,这里是潇晨,今天就带着大家一起来手写一个迷你版的hooks,方便大家理解hook在源码中的运行机制,配有图解,保姆级的教程,只求同学一个小小的👍,🐶。 第一步&#xf…...

【C++】AVL树

目录 1 简介 2 实现 2.1 框架构建 2.2 插入操作 2.2.1 平衡因子的更新 2.2.2 平衡因子异常时树的调整 3 检验 1 简介 AVL树基于二叉搜索树之上,又对其提出了平衡的要求,即:当向二叉搜索树插入新节点后,保证每个节点的左右…...

Mybatis源码(2) - SqlSessionTemplate的介绍及创建过程

0. 前言1. Spring对SqlSessionTemplate的管理1.1. SqlSessionTemplate的创建:1.2. MapperProxy中sqlSession的来源:2. SqlSessionInterceptor中的getSqlSession0. 前言 众所周知😏:MyBatis通过SqlSessionFactory 创建SqlSession去调用Executo…...

女生做大数据有发展前景吗?

当前大数据发展前景非常不错,且大数据领域对于人才类型的需求比较多元化,女生学习大数据也会有比较多的工作机会。大数据是一个交叉学科涉及到的知识量比较大学习有一定的难度,女生比较适合大数据采集和大数据分析方向的工作岗位。 大数据采…...

Git实用指令记录

config 用例:对git最先要做的一个操作就是配置用户名和邮箱,否则无法commit查看所有可以config的条目,非常之多$ git config --list core.symlinksfalse core.autocrlftrue core.fscachetrue color.interactivetrue color.uiauto help.forma…...

复杂美公链技术重要特色:平行公链架构

复杂美公链技术Chain33从11月开源至今,获得众多合作方的认可,其中首创的平行公链架构被百度、阿里、360等机构认可并跟进研究,这也说明了平行公链或许是区块链普及应用的重要解决方案之一。 平行公链(以下简称平行链)是…...

Java——进制转换的一些内容

Java——进制转换的一些内容1.16进制字符串String转字节数组byte[]2.16进制字符串String转10进制数字int3.字节数组byte[]转字符串String4.16进制字符串String-->byte[]-->String(使用ByteBuffer转换)5.字节数组byte[]转字符数组char[]6.字节byte转…...

使用 Nodejs、Express、Postgres、Docker 在 JavaScript 中构建 CRUD Rest API

让我们在 JavaScript 中创建一个 CRUD rest API,使用:节点.js表达续集Postgres码头工人码头工人组成介绍这是我们将要创建的应用程序架构的架构:我们将为基本的 CRUD 操作创建 5 个端点:创造阅读全部读一个更新删除我们将使用以下…...

电子招标采购系统源码之什么是电子招投标系统?

随着互联网时代的到来,各行业都受到不同的影响,其中招投标行业也不例外。为了顺应互联网潮流的发展,电子招投标逐渐取代传统的纸质的招投标方式,给招标方、投标方、招标代理等各方也带来了前所未有的机遇与挑战。那么什么是电子招…...

匹配文件名称模块glob和fnmatch

匹配文件名称模块glob 1.概述 glob模式规则与re模块的正则表达式规则不大相同,glob模块遵循标准的UNIX路径扩展规则。 fnmatch模块用于根据glob模式比较文件名 2.glob表达式匹配文件名 2.1.测试文件 介绍glob配置规则前,先使用下面的代码创建测试文…...

day12_oop

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、继承 三、重写 四、this和super 五、访问修饰符 零、 复习昨日 局部变量和成员变量什么区别 位置,作用域,初始值,内存位置,生命周期 构造方法…...

在 Flutter 中使用 webview_flutter 4.0 | js 交互

大家好,我是 17。 已经有很多关于 Flutter WebView 的文章了,为什么还要写一篇。两个原因: Flutter WebView 是 Flutter 开发的必备技能现有的文章都是关于老版本的,新版本 4.x 有了重要变化,基于 3.x 的代码很多要重…...

嵌入式ARM工业边缘计算机BL302的CAN总线接口如何设置?

CAN 接口如图所示,输入如下命令: ifconfig -a //查看所有网卡 如果 FlexCAN 驱动工作正常的话就会看到 CAN 对应的网卡接口,如图。从图中可 以看出,有一个名为“can0”的网卡,这个就是 BL302 板上的 CAN1 接口对应的 c…...

Win11系统如何安装Ubuntu20.04(WSL版本)并安装docker

终于还是下定决心去换电脑了……这次采用轻量级的WSL,发现虽然没有占内存的GUI界面,但是编码和阅读文档还是非常nice的 1、首先开启Win11的虚拟机服务 2、下载你期望的Ubuntu服务器(这里以20.04为例) 安装成功后,发现…...

Elasticsearch和Solr的区别

背景:它们都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。(是因为他们都是基于分词技术构建的倒排索引的方式进行查询)开发语言:java语言开发诞生时间:Solr2004年…...

如何在北京买房

首先我陈述一点,如果为了买房后再卖掉赚取差价,我这篇文章也许不适合,我这篇文章为整体愿景的发展而设计,为可操作房产的买卖而操作。 买房的愿景: 首先,我们要以一种心态来买房。那就是以始为终的态度&am…...

AI API智能调度中继服务:多账号管理与高可用架构实践

1. 项目概述:一个高性能的AI API智能调度中转站如果你手头有多个Claude、Gemini或者OpenAI的账号,并且经常在不同的开发工具(比如Claude Code CLI、各种SDK)之间切换使用,那你肯定体会过那种管理上的繁琐。每次调用都得…...

卫星热真空测试中射频功率测量的关键技术突破

1. 卫星热真空测试中的射频功率测量挑战在卫星研制过程中&#xff0c;热真空测试&#xff08;TVAC&#xff09;是验证航天器能否承受太空极端环境的关键环节。测试环境需要模拟太空中的高真空&#xff08;<510⁻⁶ Torr&#xff09;和极端温度&#xff08;-196℃至140℃&…...

终极显卡驱动清理指南:如何使用Display Driver Uninstaller彻底解决驱动残留问题

终极显卡驱动清理指南&#xff1a;如何使用Display Driver Uninstaller彻底解决驱动残留问题 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/dis…...

AI助手自我进化框架:异步复盘与技能固化工程实践

1. 项目概述&#xff1a;一个让AI助手学会自我进化的“内功心法”如果你用过Claude、ChatGPT或者国内的一些大模型&#xff0c;肯定有过这样的体验&#xff1a;你跟它聊得挺好&#xff0c;让它帮你写个代码、分析个文档&#xff0c;它都能干。但聊着聊着&#xff0c;你发现它好…...

基于星座匹配的眼动追踪角膜反射检测技术解析

1. 项目概述&#xff1a;基于星座匹配的角膜反射检测框架在眼动追踪技术领域&#xff0c;瞳孔-角膜反射&#xff08;P-CR&#xff09;方法一直是最可靠的解决方案之一。这种方法的核心在于准确检测和匹配角膜反射点&#xff08;glints&#xff09;——即红外LED在角膜表面形成的…...

Conforme配置管理范式:类型安全与约定优先的实践指南

1. 项目概述&#xff1a;Conforme&#xff0c;一个被低估的配置管理范式在软件开发和系统运维的日常里&#xff0c;我们总在和“配置”打交道。数据库连接字符串、API密钥、功能开关、环境变量……这些看似零散的信息&#xff0c;却像乐谱上的音符&#xff0c;共同决定了应用如…...

如何用nmrpflash拯救你的Netgear路由器:终极免费救援指南

如何用nmrpflash拯救你的Netgear路由器&#xff1a;终极免费救援指南 【免费下载链接】nmrpflash Netgear Unbrick Utility 项目地址: https://gitcode.com/gh_mirrors/nmr/nmrpflash 你的Netgear路由器突然变成"砖头"了吗&#xff1f;固件升级失败、系统崩溃…...

PyWxDump:微信数据解析技术的合规边界与技术挑战

PyWxDump&#xff1a;微信数据解析技术的合规边界与技术挑战 【免费下载链接】PyWxDump 删库 项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump PyWxDump是一个曾专注于微信数据解析的开源项目&#xff0c;它展示了在复杂软件生态中进行数据提取和分析的技术…...

Rust Trait系统深度解析:从基础到高级应用

Rust Trait系统深度解析&#xff1a;从基础到高级应用 引言 Trait是Rust中实现代码复用和多态的核心机制。通过Trait&#xff0c;我们可以定义共享行为&#xff0c;并为不同类型实现这些行为。 本文将深入探讨Rust Trait系统的核心概念、高级特性和最佳实践。 一、Trait基础 1.…...

Twitter 用户信息 API 集成指南

在这篇文章中&#xff0c;我们将介绍如何集成 Twitter 用户信息 API。利用这个 API&#xff0c;您可以获取 Twitter 用户的详细信息。只需输入 Twitter 用户的用户名&#xff0c;就能够输出该用户的 Twitter 主页信息。 环境准备 要使用此 API&#xff0c;您需要在 Twitter 用…...