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

Spring boot 实现监听 Redis key 失效事件

一. 开启Redis key过期提醒

  • 方式一:修改配置文件

    redis.conf

    # 默认 notify-keyspace-events ""
    notify-keyspace-events Ex
    
  • 方式二:命令行开启

    CONFIG SET notify-keyspace-events Ex
    CONFIG GET notify-keyspace-events
    

二. notify-keyspace-events

notify-keyspace-events 选项的默认值为空

notify-keyspace-events 的参数可以是以下字符的任意组合, 它指定了服务器该发送哪些类型的通知。

字符发送的通知
K键空间通知,所有通知以 keyspace@ 为前缀
E键事件通知,所有通知以 keyevent@ 为前缀
gDEL 、 EXPIRE 、 RENAME 等类型无关的通用命令的通知
$字符串命令的通知
l列表命令的通知
s集合命令的通知
h哈希命令的通知
z有序集合命令的通知
x过期事件:每当有过期键被删除时发送
e驱逐(evict)事件:每当有键因为 maxmemory 政策而被删除时发送
A参数 g$lshzxe 的别名

三. Coding

  1. 初始化一个Spring Boot项目

  2. pom.xml

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
    </dependencies>
    
  3. 定义配置类`RedisListenerConfig

    @Configuration
    public class RedisListenerConfig {@BeanRedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(connectionFactory);return container;}}
    
  4. 定义监听器 实现KeyExpirationEventMessageListener接口
    查看源码发现,该接口监听所有db的过期事件keyevent@*:expired"
    定义Status1ExpirationListener监听状态1到期

    @Slf4j
    @Component
    public class Status1ExpirationListener extends KeyExpirationEventMessageListener {public Status1ExpirationListener(RedisMessageListenerContainer listenerContainer) {super(listenerContainer);}@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Overridepublic void onMessage(Message message, byte[] pattern) {// message.toString()可以获取失效的keyString expiredKey = message.toString();// 业务处理}}
    

    定义Status2ExpirationListener监听状态2到期

    @Slf4j
    @Component
    public class Status2ExpirationListener extends KeyExpirationEventMessageListener {public Status2ExpirationListener(RedisMessageListenerContainer listenerContainer) {super(listenerContainer);}@Overridepublic void onMessage(Message message, byte[] pattern) {// message.toString()可以获取失效的keyString expiredKey = message.toString();// 业务处理}}
    

四. 参考

Redis keyspace notifications

相关文章:

Spring boot 实现监听 Redis key 失效事件

一. 开启Redis key过期提醒 方式一&#xff1a;修改配置文件 redis.conf # 默认 notify-keyspace-events "" notify-keyspace-events Ex方式二&#xff1a;命令行开启 CONFIG SET notify-keyspace-events Ex CONFIG GET notify-keyspace-events二. notify-keyspace-e…...

振动样品磁强计

振动样品磁强计是基于电磁感应原理的高灵敏度磁矩测量仪。检测线圈中的振动产生的感应电压与样品的磁矩&#xff0c;振幅和振动频率成正比。在确保振幅和振动频率的不便的基础上&#xff0c;使用锁相放大器测量该电压&#xff0c;然后可以计算出待测样品的磁矩。 振动样品磁强计…...

C语言标准库介绍:<string.h>

在C语言中&#xff0c;<string.h>头文件是标准库中的一个重要部分&#xff0c;它定义了一系列操作字符串和字符数组的函数。本文将详细介绍<string.h>头文件中包含的22个函数&#xff0c;并提供每个函数的完整示例代码。 简介 <string.h>头文件定义了一个变…...

大语言模型LangChain本地知识库:向量数据库与文件处理技术的深度整合

文章目录 大语言模型LangChain本地知识库&#xff1a;向量数据库与文件处理技术的深度整合引言向量数据库在LangChain知识库中的应用文件处理技术在知识库中的角色向量数据库与文件处理技术的整合实践挑战与展望结论 大语言模型LangChain本地知识库&#xff1a;向量数据库与文件…...

展厅设计中都包含哪些分区与展示内容

1、欢迎区 欢迎区是展厅的入口处&#xff0c;通常展示企业品牌、企业标志和企业形象等内容。这个区域通常会有一个欢迎台&#xff0c;展示企业的宣传片、简介和最新资讯等。 2、产品展示区 产品展示区是展示企业产品的区域&#xff0c;展示的产品包括企业主营产品、新产品和重点…...

【k8s核心概念与专业术语】

k8s架构 1、服务的分类 服务分类按如下图根据数据服务支撑&#xff0c;分为无状态和有状态 无状态引用如下所示&#xff0c;如果一个nginx服务&#xff0c;删除后重新部署有可以访问&#xff0c;这个属于无状态&#xff0c;不涉及到数据存储。 有状态服务&#xff0c;如redis&a…...

【stm32】hal库学习笔记-UART/USART串口通信(超详细!)

【stm32】hal库学习笔记-UART/USART串口通信 hal库驱动函数 CubeMX图形化配置 导入LCD.ioc RTC设置 时钟树配置 设置LSE为RTC时钟源 USART设置 中断设置 程序编写 编写主函数 /* USER CODE BEGIN 2 */lcd_init();lcd_show_str(10, 10, 16, "Demo12_1:USART1-CH340&q…...

通俗易懂理解GhostNetV1轻量级神经网络模型

一、参考资料 原始论文&#xff1a;[1] PyTorch代码链接&#xff1a;Efficient-AI-Backbones MindSpore代码&#xff1a;ghostnet_d 解读模型压缩5&#xff1a;减少冗余特征的Ghost模块&#xff1a;华为Ghost网络系列解读 GhostNet论文解析&#xff1a;Ghost Module CVPR…...

P8630 [蓝桥杯 2015 国 B] 密文搜索

P8630 [蓝桥杯 2015 国 B] 密文搜索 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P8630 题目分析 基本上是hash的板子&#xff0c;但实际上对于密码串&#xff0c;只要判断主串中任意连续的八个位置是否存在密码串即可&#xff1b;那么我们…...

Electron实战之环境搭建

工欲善其事必先利其器&#xff0c;在进行实战开发的时候&#xff0c;我们最终的步骤是搞好一个舒服的开发环境&#xff0c;目前支持 Vue 的 Electron 工程化工具主要有 electron-vue、Vue CLI Plugin Electron Builder、electron-vite。 接下来我们将分别介绍基于 Vue CLI Plu…...

【0259】inval.h/inval.c的理解

1. inval.h/inval.c inval.h、inval.c是缓存无效消息(invalidation message)调度程序定义。 2. inval.h/inval.c特性 inval.h/inval.c的实现是一个非常微妙的东西,所以需要注意: 当一个元组被更新或删除时,我们的标准可见性规则(standard visibility rules)认为只要我…...

力扣爆刷第77天--动态规划一网打尽打家劫舍问题

力扣爆刷第77天–动态规划一网打尽打家劫舍问题 文章目录 力扣爆刷第77天--动态规划一网打尽打家劫舍问题一、198.打家劫舍二、213.打家劫舍II三、337.打家劫舍 III 一、198.打家劫舍 题目链接&#xff1a;https://leetcode.cn/problems/house-robber/ 思路&#xff1a;小偷不…...

深入理解C语言(5):程序环境和预处理详解

文章主题&#xff1a;程序环境和预处理详解&#x1f30f;所属专栏&#xff1a;深入理解C语言&#x1f4d4;作者简介&#xff1a;更新有关深入理解C语言知识的博主一枚&#xff0c;记录分享自己对C语言的深入解读。&#x1f606;个人主页&#xff1a;[₽]的个人主页&#x1f3c4…...

ESP8266智能家居(3)——单片机数据发送到mqtt服务器

1.主要思想 前期已学习如何用ESP8266连接WIFI&#xff0c;并发送数据到服务器。现在只需要在单片机与nodeMCU之间建立起串口通信&#xff0c;这样单片机就可以将传感器测到的数据&#xff1a;光照&#xff0c;温度&#xff0c;湿度等等传递给8266了&#xff0c;然后8266再对数据…...

lvm逻辑卷创建raid阵列(不常用)—— 筑梦之路

RAID卷介绍 逻辑卷管理器(LVM)不仅仅可以将多个磁盘和分区聚合到一个逻辑卷中&#xff0c;以此提高单个分区的存储容量&#xff0c;还可以创建和管理独立磁盘的冗余阵列(RAID)卷&#xff0c;防止磁盘故障并提高性能。它支持常用的RAID级别&#xff0c;支持的RAID的级别有 0、1…...

LayUI发送Ajax请求

页面初始化操作 var processData null $(function () {initView();initTable();// test(); })function initView() {layui.use([laydate, form], function () {var laydate layui.laydate;laydate.render({elem: #applyDateTimeRange,type: datetime,range: true});}); }初始…...

平时积累的FPGA知识点(10)

平时在FPGA群聊等积累的FPGA知识点&#xff0c;第10期&#xff1a; 41 ZYNQ系列芯片的PL中使用PS端送过来的时钟&#xff0c;这些时钟名字是自动生成的吗&#xff1f; 解释&#xff1a;是的。PS端设置的是ps_clk&#xff0c;用report_clocks查出来的时钟名变成了clk_fpga_0&a…...

使用Streamlit构建纯LLM Chatbot WebUI傻瓜教程

文章目录 使用Streamlit构建纯LLM Chatbot WebUI傻瓜教程开发环境hello Streatelit显示DataFrame数据显示地图WebUI左右布局设置st.sidebar左侧布局st.columns右侧布局 大语言模型LLM Chatbot WebUI设置Chatbot页面布局showdataframe()显示dataframeshowLineChart()显示折线图s…...

电脑死机卡住怎么办 电脑卡住鼠标也点不动的解决方法

在我们使用电脑的过程中,可能由于电脑硬件或者软件的问题,偶尔会出现电脑卡住的情况,很多电脑小白都不知道电脑卡住了怎么办,鼠标也点不动,键盘也没用,一旦发生了这种情况,大家可以来参考一下小编分享的电脑死机卡住的解决方法。 电脑卡住鼠标也点不动的解决方法 方…...

RAG 语义分块实践

每日推荐一篇专注于解决实际问题的外文,精准翻译并深入解读其要点,助力读者培养实际问题解决和代码动手的能力。 原文标题:Semantic chunking in practice 原文地址:https://medium.com/@boudhayan-dev/semantic-chunking-in-practice-23a8bc33d56d 语义分块的实践 回顾 …...

【Perplexity医疗搜索实战指南】:3大临床决策加速器与5个被90%医生忽略的精准检索技巧

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity医疗搜索的核心价值与临床适配性 Perplexity医疗搜索并非通用搜索引擎的简单垂直化迁移&#xff0c;而是专为临床决策闭环设计的认知增强工具。其核心价值在于将海量异构医学文献、指南更新、药品说…...

【免费下载】 探索地理信息的无限可能:MATLAB Mapping Toolbox 自由之旅【matlab下载】

探索地理信息的无限可能&#xff1a;MATLAB Mapping Toolbox 自由之旅 在数字化时代的浪潮中&#xff0c;地理信息系统&#xff08;GIS&#xff09;已成为连接现实世界与数字世界的桥梁。今天&#xff0c;我们特别向您推荐一个开源宝藏——MATLAB Mapping Toolbox R2019b提取版…...

Excel VBA编程实例(150例):助你轻松掌握办公自动化利器

Excel VBA编程实例(150例)&#xff1a;助你轻松掌握办公自动化利器 【下载地址】ExcelVBA编程实例150例资源下载 本仓库提供了一个名为“Excel VBA编程实例(150例)”的资源文件下载。该资源文件包含了150个Excel VBA编程实例&#xff0c;旨在帮助用户通过实际案例学习和掌握Exc…...

从决策树到XGBoost:核心原理、目标函数与工程优化全解析

1. 从“头发长短”到“预测房价”&#xff1a;决策树的灵魂与回归树的诞生很多朋友第一次接触XGBoost&#xff0c;或者更广义的树模型时&#xff0c;都会被一堆公式和术语劝退。什么信息增益、基尼系数、正则项、二阶泰勒展开……看几篇博客&#xff0c;感觉每篇都在自说自话&a…...

搞定银河麒麟V10+飞腾平台Qt开发环境后,我总结的3个必做配置和1个字体坑

银河麒麟V10飞腾平台Qt开发环境深度调优指南 在国产化技术栈中&#xff0c;银河麒麟V10操作系统搭配飞腾D2000处理器的组合正逐渐成为自主可控解决方案的主流选择。对于需要在此平台上进行Qt开发的工程师而言&#xff0c;成功安装Qt仅仅是万里长征的第一步。本文将深入剖析三个…...

突破60帧限制!《原神》帧率解锁工具完全指南

突破60帧限制&#xff01;《原神》帧率解锁工具完全指南 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 还在为《原神》的60帧限制感到困扰吗&#xff1f;想让你的高刷新率显示器发挥真正…...

Nintendo Switch文件管理终极指南:NSC_BUILDER如何成为你的游戏库管家

Nintendo Switch文件管理终极指南&#xff1a;NSC_BUILDER如何成为你的游戏库管家 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase title…...

【Perplexity AI高手速成指南】:20年AI工程师亲授7大核心技能与3个避坑红线

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Perplexity AI平台核心架构与能力边界 Perplexity AI 并非传统意义上的开源模型托管平台&#xff0c;而是一个以“答案溯源”为设计哲学的智能问答引擎。其底层融合了多阶段检索增强生成&#xff08;RAG&#…...

三星固件下载神器Bifrost:三分钟学会跨平台官方固件下载与解密

三星固件下载神器Bifrost&#xff1a;三分钟学会跨平台官方固件下载与解密 【免费下载链接】Bifrost Cross-platform tool for downloading Samsung mobile device firmware. 项目地址: https://gitcode.com/gh_mirrors/sa/Bifrost 还在为找不到三星官方固件而烦恼吗&am…...

还在为Linux文件搜索太慢而烦恼?FSearch让文件秒级定位成为现实

还在为Linux文件搜索太慢而烦恼&#xff1f;FSearch让文件秒级定位成为现实 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 你是否曾在Linux系统中花费大量时间寻找一…...