监听Redis中key过期事件

本文介绍了如何利用Redis的键空间通知功能监听Key过期事件,以实现实时处理订单超时取消等业务需求。通过配置notify-keyspace-events为Ex,配合Spring Data Redis的发布订阅功能,可以实现Java应用中的键过期事件监控。

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

在工作中偶尔会遇到这样一个场景:用户下单之后,若30分钟内未完成支付,则取消订单。

做过电商业务的同学,尤其是做统一下单业务的同学一般都会接触过这个场景的需求,一般的处理方式是将订单数据存储到数据库中(MySQL之类的),然后由一个定时Job不断的去扫描符合条件的订单,修改订单状态为已取消。当然这只是其中一个处理办法,我们还可以使用到延时队列来处理。

那么如果我们使用Redis是否可以实现这一功能?我们知道在使用Redis的过程中,大多是由客户端主动的去操作服务端,比如set、del、get、expire等操作。而当一个key过期被删除的时候,由服务端主动的去通知客户端,这个要怎么做?

之前在一个项目中,是自己写了一个定时Job不断是去轮询要监听的某些key,然后如果发现Redis中不存在要get的key,则执行一段业务逻辑,我们的扫描频率取决于Job的执行频率,所以并不能保证key在过期时被立即监听到,如果n秒执行一次,则key最大可能会在2n-1秒之后被执行,会有一定的延迟,那么我们能否让Redis主动的在缓存失效的时候通知我们呢?

解析

由服务端主动通知客户端,那么就是需要通过一个事件来触发某项通知,事件通过Redis的订阅和发布功能来进行分发,我们查看Redis的配置文件中有一个EVENT NOTIFICATION配置,也名键空间通知
在这里插入图片描述
注释上说:Redis可以通知发布/订阅客户端关于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值