鍍金池/ 問(wèn)答/人工智能  PHP  HTML/ 大佬們這種消息隊(duì)列該如何改進(jìn)?

大佬們這種消息隊(duì)列該如何改進(jìn)?

業(yè)務(wù)需求:

根據(jù)訂單信息定時(shí)發(fā)送消息。 
現(xiàn)在2018年3月1日16:37:51,比如要在3月2日9點(diǎn)發(fā)送一條,
12點(diǎn)發(fā)送一條,3月15日1點(diǎn)發(fā)送一條 ,這樣的。

目前的設(shè)計(jì):

現(xiàn)在我是把發(fā)送時(shí)間戳等信息放入redis hash的key中,一條條放入。
 然后crontab定時(shí)hkeys獲取所有key判斷出小于當(dāng)前時(shí)間的就發(fā)送消息,并刪掉一條。

問(wèn)題:

總覺(jué)得這種設(shè)計(jì)特別不對(duì)勁,又說(shuō)不上哪里不對(duì)勁。
技術(shù)思路還太菜,大佬們有什么建議嗎?
PS:如果能按時(shí)間順序排列,那就比較好了。但是新增訂單的發(fā)送時(shí)間不是按順序的。
回答
編輯回答
使勁操

之前做過(guò)這種需要,我們的實(shí)時(shí)性可能比你的要求高一點(diǎn)。我是將發(fā)的內(nèi)容和時(shí)間放在了rabbitMQ里面,開(kāi)了多個(gè)worker去拿取數(shù)據(jù)處理。

2017年4月12日 11:40
編輯回答
懶洋洋

思路并沒(méi)有問(wèn)題,但是隊(duì)列是一種線性結(jié)構(gòu),而 Reids 的基本結(jié)果是映射表結(jié)構(gòu)……所以不對(duì)勁的地方可能就在這里

2018年8月10日 02:58
編輯回答
維他命

簡(jiǎn)單做的話,可以用redis的有序集。拿目標(biāo)執(zhí)行的時(shí)間戳作為score,每次判斷的時(shí)候,只要取score最小的一條判斷是否需要執(zhí)行即可

2017年12月8日 01:15