文章目录
一、方案选择
- 1.redis数据超时处理
- 2.使用spring + quartz定时任务(支持任务信息写入mysql,多节点分布式执行任务),下单成功后,生成一个30分钟后运行的任务,30分钟后检查订单状态,如果未支付,则进行处理
- 3.写入数据库轮询
- 4.使用Java的定时器,不支持高可用,设置定时器的节点挂掉或者重启,任务失效!
二、结论
推荐使用方案1和方案2,最终决定使用方案1
三、实施
项目目录
1.springboot引入redis
添加redis依赖
2.添加配置
3.监听数据超时
4.redis配置数据超时通知
修改 redis 相关事件配置。找到 redis 配置文件 redis.conf,查看 notify-keyspace-events 配置项,如果没有,添加 notify-keyspace-events Ex,如果有值,则追加 Ex,相关参数说明如下:
- K:keyspace 事件,事件以 keyspace@ 为前缀进行发布
- E:keyevent 事件,事件以 keyevent@ 为前缀进行发布
- g:一般性的,非特定类型的命令,比如del,expire,rename等
- $:字符串特定命令
- l:列表特定命令
- s:集合特定命令
- h:哈希特定命令
- z:有序集合特定命令
- x:过期事件,当某个键过期并删除时会产生该事件
- e:驱逐事件,当某个键因 maxmemore 策略而被删除时,产生该事件
- A:g$lshzxe的别名,因此”AKE”意味着所有事件
6.测试controller
项目源码
没有积分、github可以留言邮箱,我看到就给发过去
github地址
csdn地址
参考文章
blog.csdn.net/q915002974/…
blog.csdn.net/sinat_37167…
blog.csdn.net/zhaoheng314…
blog.csdn.net/qq_41234832…
codingdict.com/questions/5…
www.bubuko.com/infodetail-…
小黄鸭编程社区
mp.weixin.qq.com/s/cfAXnh92R…