用redis的监听失效key方法来去执行任务,怎么优化好不稳定性?

发布于 2022-09-12 03:01:21 字数 244 浏览 19 评论 0

现在有倒计时的任务,但是任务完成结束的时间无法确定,延迟在10秒左右,可能会5秒就好,也可能12秒左右就好,现在我无法预估好失效的时间,只能取15秒的延迟时间,然后监听失效后去调取函数,然后去循环计算并且更新各个用户的奖励值,现在的问题就是太不稳定了,延迟了15秒,可能任务还没完成结束,监听就已经开始了,导致数据出错不更新;如果设置延迟时间太长,更新用户的值所用的时长也会变的很长,现在我想要能准确监听好任务的完成,并且更新用户的值的时长也不会很长,有什么好的解决办法吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

瑾夏年华 2022-09-19 03:01:21

org.springframework.data.redis.listener.KeyExpirationEventMessageListener

这个类可以用于Redis过期监听。

我一向站在原地 2022-09-19 03:01:21

你的问题应该从需求的根源去找才是,为什么任务完成结束的时间不确定?
如果你的需求丑陋,那么技术方案也变得很丑陋。
所以回过头来想想,是不是可以从需求上面去解决问题?

舟遥客 2022-09-19 03:01:21

任务完成之后是否可以异步调用‘结算积分’方法,否的话见方案1

方案1:

监听binlog变化,发现任务完全则进行积分结算,推荐使用阿里开源的canal

canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

破晓 2022-09-19 03:01:21

1.rabbitMQ的延迟队列+死信队列
2.采用MySQL的定时器来自动维护

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文