redistemplate 设置失效时间_开发新技能之利用Redis高级用法监听过期键处理失效的订单...

前言

最近项目区分了不同的订单类型,要求订单的失效时间不一样,比如活动订单的失效时间要短一些。由于之前订单的失效时间都是固定的,现在有些类型的订单过期时间发生变化。因此需要重新处理时效订单。

订单失效解决方案

常用方法

一个定时任务,轮训没支付的订单,比较下单时间和当前时间,如果过期还没支付,就取消订单。

问题: 每个订单的创建时间不一样,定时任务的规则无法设定,如果将定时任务执行的间隔,设置得过短,查询太频繁,影响效率。

新方案

在生成订单时,将订单号放入Redis中,设置对应的过期时间。如果订单过期后能够发送给程序一个通知,或者执行一个方法,那么即可解决订单关闭问题。

原理:通过监听 Redis 提供的过期队列来实现,监听过期队列后,如果 Redis 中某一个 KV 键值对过期了,那么将向监听者发送消息,监听者可以获取到该键值对的 K,拿到 K 后,通过 K 定位订单,并判断其状态,如果是未支付,更新为关闭,或者取消状态即可。

实战

1 修改redis.conf 默认的配置:notify-keyspace-events ""
、 为:notify-keyspace-events Ex

8826c9c6f42a912e14910de69dfe240c.png

2 reidis 监听配置

adfcee3917285796c54fffc1c18461ba.png
909b4c4fcd864ee40fe363a2339ff8eb.png

测试

1 设置订单过期时间

4fc2f2dc8564f4d8da9080f9b82dc2e3.png

2

80d933d4b74e6cded256088fc1952099.png

总结

此种方法利用Redis事件监听能准确地处理时效订单。

致谢

感谢看文章的小伙伴,如果有疑问欢迎交流,如果能加下关注就更好了,你们的关注是我持续更新的动力,让我们用好工具,减少打工人的工作时间,有更多的时间陪伴家人和思考这个世界。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值