redis 过期回调通知

本文介绍如何利用Redis的keyspace通知功能,在键过期时触发回调。通过配置notify-keyspace-events参数并订阅特定通道,可实现实时监控键的过期状态,适用于需要对过期键进行即时响应的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

redis 过期回调通知

背景

在使用redis的过程中,有时我们会遇到这种情景,当key过期的时候,我们需要去重新做一些操作,比如重新生成value等。之前,一直用的是添加一个celery定时任务,今天了解redis的通知功能后,发现可以用直接实现。

简介

官方原文:https://redis.io/topics/notifications
简单来说,在2.8.0之后,redis提供了keyspace 通知的功能,可以实时监控redis中keys的变化情况(set, expire,expired,del...)结果会通过redis的消息订阅/发布机制。我们通过订阅指定的channel,就可以知道redis中哪些值过期。

使用

  • 开启notify-keyspace-events。
    默认情况下,redis是关闭了此功能,我们可以在配置文件中开启。也可以通过命令redis-cli config set notify-keyspace-events KEA
    其中KEA代表的意义可以查看文档的说明,
    810345-20181115214617611-1877405382.png

(如果我们只关心过期的事件,我们可以使用KEx)
此时,当我们设置的key过期的时候,我们就可以通过订阅“__key[db]__:[key]” 来监听了

  • 订阅
    配置好后,我们运行redis的订阅指令redis-cli psubscribe '__key*__:*',然后我们设置一个值,并添加过期时间,就可以看到在过期后,就会收到消息了,(收到怎样的消息需要看前面的配置, 这里本人配置的是KEx,仅监听过期)。
    而订阅的处理方式可以用自己熟悉的语言去实现

反思

redis默认没开启可能是考虑到性能,毕竟会多一个监控,发布的步骤,具体性能怎么养,还是后面空了在测试下吧,本文只提供个思路。

转载于:https://www.cnblogs.com/yuzhenjie/p/9966285.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值