为了账号安全,请及时绑定邮箱和手机立即绑定

大佬们这种消息队列该如何改进?

大佬们这种消息队列该如何改进?

PHP
aluckdog 2019-03-05 22:47:11
业务需求: 根据订单信息定时发送消息。 现在2018年3月1日16:37:51,比如要在3月2日9点发送一条, 12点发送一条,3月15日1点发送一条 ,这样的。 目前的设计: 现在我是把发送时间戳等信息放入redis hash的key中,一条条放入。 然后crontab定时hkeys获取所有key判断出小于当前时间的就发送消息,并删掉一条。 问题: 总觉得这种设计特别不对劲,又说不上哪里不对劲。 技术思路还太菜,大佬们有什么建议吗? PS:如果能按时间顺序排列,那就比较好了。但是新增订单的发送时间不是按顺序的。
查看完整描述

3 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

简单做的话,可以用redis的有序集。拿目标执行的时间戳作为score,每次判断的时候,只要取score最小的一条判断是否需要执行即可

查看完整回答
反对 回复 2019-03-18
?
冉冉说

TA贡献1877条经验 获得超1个赞

思路并没有问题,但是队列是一种线性结构,而 Reids 的基本结果是映射表结构……所以不对劲的地方可能就在这里

查看完整回答
反对 回复 2019-03-18
?
繁星coding

TA贡献1797条经验 获得超4个赞

之前做过这种需要,我们的实时性可能比你的要求高一点。我是将发的内容和时间放在了rabbitMQ里面,开了多个worker去拿取数据处理。

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 391 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信