Redis过期键监听

news2024/9/22 23:30:17

在 Redis 中,为了监听过期键事件,需要使用 Redis 的 Keyspace Notifications 功能。这一功能允许客户端订阅某些事件的发生,比如键过期、键删除等。

启用过期键监听

在 Redis 的配置文件 redis.conf 中,确保配置项 notify-keyspace-events 包含 'Ex''E' 表示启用过期事件通知,'x' 表示键事件。这可以通过直接在配置文件中设置:

notify-keyspace-events Ex

也可以在 Redis 运行时使用命令设置

CONFIG SET notify-keyspace-events Ex

订阅 Redis 过期事件

@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {


    @Override
    public void onMessage(Message message, byte[] pattern) {

        });
    }
}

注意事项

  • 启用 Keyspace Notifications 会有一定的性能开销,因为 Redis 需要处理和传播事件通知。应在可能的情况下限制通知的范围,仅启用必要的事件类型。
  • 且通知是一次性的,没有ack机制,若收到通知后处理失败,将不再收到通知。需自行保证收到通知后处理成功。
  • 由于Redis key过期删除策略是定期+惰性删除,当key过多时,删除会有延迟。

如果对过期通知实时有要求的场景慎重考虑使用这种方式,引用Redis官方文档描述。

https://redis.io/docs/latest/develop/use/keyspace-notifications/#timing-of-expired-eventsicon-default.png?t=N7T8https://redis.io/docs/latest/develop/use/keyspace-notifications/#timing-of-expired-events

Timing of expired events

Keys with a time to live associated are expired by Redis in two ways:

  • When the key is accessed by a command and is found to be expired.
  • Via a background system that looks for expired keys in the background, incrementally, in order to be able to also collect keys that are never accessed.

The expired events are generated when a key is accessed and is found to be expired by one of the above systems, as a result there are no guarantees that the Redis server will be able to generate the expired event at the time the key time to live reaches the value of zero.

If no command targets the key constantly, and there are many keys with a TTL associated, there can be a significant delay between the time the key time to live drops to zero, and the time the expired event is generated.

Expired (expired) events are generated when the Redis server deletes the key and not when the time to live theoretically reaches the value of zero.

 

与生存时间(TTL)相关联的键通过两种方式在 Redis 中过期:

  1. 当一个命令访问该键并发现其已过期时。
  2. 通过一个后台系统,该系统在后台增量地查找过期的键,以便能够收集那些从未被访问过的键。

过期事件是在键被访问并通过上述某个系统发现过期时生成的。因此,Redis 服务器无法保证在键的生存时间降至零时就能立即生成过期事件。

如果没有命令持续访问该键,并且存在许多具有 TTL 的键,那么从键的生存时间降至零到生成过期事件之间可能会有显著的延迟。

过期(expired)事件是当 Redis 服务器删除该键时生成的,而不是在生存时间理论上达到零时生成的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086037.html

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

相关文章

恒电流间歇滴定法 (GITT) 测试教程

文章目录 恒电流间歇滴定法 (GITT) 测试教程1. GITT 测试原理2. 实验准备2.1 设备与材料2.2 配置实验装置 3. GITT 测试步骤3.1 设定测试参数3.2 执行 GITT 测试 4. 数据分析4.1 电压变化分析4.2 扩散系数计算4.3 电荷传输阻抗分析 5. 总结与应用 恒电流间歇滴定法 (GITT) 测试…

【最新发布】OpenCV实验大师工作流引擎 - 实现OpenCV算法从设计到交付零代码

点击查看 更多 OpenCV工作流引擎案例与代码教程,QT集成案例 OpenCV实验大师工具软件介绍 一款能够提升OpenCV教学质量与OpenCV工程化开发质量与速度的OpenCV算法设计与流程验证 工具软件 - OpenCV实验大师平台。 一款OpenCV工程化开发效率提升与OpenCV教学质量提升…

一步迅速了解Spring框架中的几大特点

一,Spring框架的特点1 :AOP 1, AOP全称: Aspect Oriented Programming 2, AOP主要是用面向切面编程思想处理问题,面向切面编程是对面向对象编程的补充和延续 3,面向切面编程思想 面向切面编程思想是将我们程序中的非业务代码&am…

[SimCLR v2] Big Self-Supervised Models are Strong Semi-Supervised Learners

1、目的 借助无监督预训练来提升半监督学习的效果 2、方法 1)unsupervised/self-supervised pretrain -> task-agnostic -> big (deep and wide) neural network可以有效提升准确性 -> improvements upon SimCLR larger ResNet models;deeper …

03:logic软件操作界面及常用设置

1.打开logic软件 2显示工具栏 3.logic软件常用设置 3.1常规页设置 3.2设计页设置 3.3颜色设置

在发布您的插件之前,如何在 ONLYOFFICE 插件市场中进行测试?

ONLYOFFICE 插件为我们提供了强大的定制和拓展功能。作为插件开发人员,您可能希望在发布之前,在插件管理器中预览您的插件。这篇文章将指导您如何在 ONLYOFFICE 插件市场中预览插件。 关于 ONLYOFFICE ONLYOFFICE 是一个国际开源项目,由领先…

大数据智能风控核心:模型

概述 模型 线性判别分析方法,Sir Ronald Fisher最早提出模型评分的概念。 个人FICO模型信用分。 巴塞尔委员会发布巴塞尔Ⅱ协议,推出内部评级法(Internal Rating Based Approach,IRB)​。IRB综合考虑客户评级和债项…

HLS报错之:Export RTL报错 “ERROR: [IMPL 213-28] Failed to generate IP.“

原因:官方bug 解决办法:下载补丁(补丁适用于2014年至2021年的多个Vivado版本),并添加到对应路径下即可。 注意:windows下该方法试用。 补丁连接 我这里下载到xilinx的目录下并解压: 点进去找…

微服务集成 Seata

文章目录 引入依赖配置TC地址其它服务使用 本篇文章介绍分布式架构下, 各个微服务之间要达成分布式事务, 引入 Seata 的步骤和使用方式. 引入依赖 首先&#xff0c;在 order-service 服务中引入依赖&#xff1a; <!--seata--> <dependency><groupId>com.al…

YOLOv8改进 | 模块缝合 | C2f融合多尺度表征学习模块 【含OD、RTDETR、OBB等yaml文件】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

String框架基础补充

前言 本文将继续上一篇文章的内容对 Spring 数据访问层管理,Spring集成mybatis等知识进行补充,未看过上一篇文章的小伙伴可以点击下方链接,跳转观看上一篇文章Spring框架基础https://mp.csdn.net/mp_blog/creation/editor/141639879 Spring数据访问层管理 首先,我们需要知道 : …

软考高项彻底没用了?谁说的?站出来,我保证不笑场!

哎呀&#xff0c;最近这风言风语可不少啊&#xff0c;说咱们的软考高项证书成了“过气网红”&#xff0c;彻底没用了&#xff1f;这可真是让我哭笑不得&#xff0c;咱们得好好聊聊这个话题&#xff0c;不能让这“谣言”满天飞啊&#xff01; 首先&#xff0c;我得说&#xff0…

直播电商如何重构人场关系?推荐这套电商精细化运营方案!

随着电子商务的不断发展&#xff0c;直播电商和货架电商已经成为两大主流的在线购物模式。它们各自以独特的方式满足消费者的购物需求&#xff0c;同时也有不同的商业挑战和机遇。本文将从消费者行为、技术应用、品牌策略等多个角度分析这两种电商模式的核心区别。同时&#xf…

大众集团25届校招社招网申入职SHL测评题库:综合能力测评、性格问卷、英语测评考什么?

恭喜您通过大众汽车(中国)科技有限公司的简历初。请点击下面的测评链接&#xff0c;在5天内完成测评&#xff0c;过期失效(例:3.11收到链接&#xff0c;3.15为最后一天有效期)。每位人选只有一次测评机会。 ​大众汽车入职测试细节: 1.性格问卷:25 分钟 2.综合能力:46 分钟&a…

Python 轻松去除验证码干扰点,让识别不再犯难

Python 轻松去除验证码干扰点&#xff0c;让识别不再犯难 引言一、干扰点噪声二、图片降噪三、测试运行结果写在最后 作者&#xff1a;高玉涵 时间&#xff1a;2024.8.29 21:52 博客&#xff1a;blog.csdn.net/cg_i 环境&#xff1a;Windows10、Python 3.11.3、PIL、Tesseract-…

Unet改进10:在不同位置添加CPCA||通道先验卷积注意力机制

本文内容:在不同位置添加CPCA注意力机制 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 低对比度和显著的器官形状变化等特征经常出现在医学图像中。现有注意机制的自适应能力普遍不足,限制了医学影像分割性能的提高。本文提出了一种有效的通道先验卷积…

储能电池热失控监测系统的研发难点是什么?

​ ​​储能电池热失控监测系统的研发难点主要包括以下几个方面&#xff1a; ​ ​1.准确的早期预警 ​ ​在热失控发生的早期阶段&#xff0c;电池的温度、电压、电流等特征参数变化可能非常缓慢&#xff0c;通过传统的监测方法难以及早地监测到电池故障。而此时电池…

使用C++,仿照string类,实现myString

类由结构体演化而来&#xff0c;只需要将struct改成关键字class&#xff0c;就定义了一个类 C中类和结构体的区别&#xff1a;默认的权限不同&#xff0c;结构体中默认权限为public&#xff0c;类中默认权限为private 默认的继承方式不同&#xff0c;结构体的默认继承方式为p…

LLM的发展简述

文章目录 1. NLP的发展简史2. LLM 的进展3. 参考 1. NLP的发展简史 信息理论的创立&#xff1a;20世纪50年代&#xff0c;Claude Shannon 奠定了信息理论的基础&#xff0c;引入了熵和冗余等概念&#xff0c;对 NLP 和计算语言学产生了深远影响。 形式语法的发展&#xff1a;…

代码随想录(day8)—环形链表

题目 预备知识点&#xff1a; for和while的区别 while语句属于循环语句&#xff0c;在判断是&#xff0c;如果条件为true&#xff0c;则会继续判断&#xff0c;直到false为止&#xff0c;即会进行多次判断&#xff08;除非一开始条件就是错的&#xff09;。 if语句属于条件判…