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

redis实现队列,一定要用crontab定时任务来执行吗

redis实现队列,一定要用crontab定时任务来执行吗

PHP
扬帆大鱼 2019-03-11 21:38:15
比如说秒杀活动这种高并发的情况下,我们使用redis函数rpush,lpop实现队列处理。为什么在网上看到的,都是先用rpush把请求先放入队列中比如rpush.php,$arr = array('h','e','l','l','o','w','o','r','l','d'); // 模拟请求  foreach($arr as $k=>$v){     $redis->rpush("mylist",$v);   }然后再用lpop取出队列每个请求lpop.php$redis->lpop('mylist');建立定时任务*/1 * * * * root php /wwwroot/workplace/redis/rpush.php  */3 * * * * root php /wwwroot/workplace/redis/lpop.php问题:用redis实现消息队列步骤都是这样的吗。进队和出队列分开两个文件,然后用crontab定时执行吗.
查看完整描述

2 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

不太能理解为什么要用crontab, 消息队列说简单点就是生产者消费者模式,一般是分开处理

生产者: 假如用的是PHP-FPM这种模式,收到请求后直接push到队列里
消费者: 一般都是写一个常驻内存服务阻塞获取队列里面消息(blpop),有新消息就立刻处理

猜测用到crontab是因为没有用阻塞方式获取,然后每3秒检查一下是否有新消息,但是3秒处理一次对于秒杀来说就有些不合适了


查看完整回答
反对 回复 2019-03-11
?
呼唤远方

TA贡献1856条经验 获得超11个赞

首先你要把网上看到的那个用crontab方案的理由说出来,可能场景不一样,比如秒杀小米手机,用户下单通过接口把重要的消息rpush进redis队列,然后超过数量就不给rpush了,给用户一个安慰提示,接下来lpop发单了,以上个人看法。

查看完整回答
反对 回复 2019-03-11
  • 2 回答
  • 0 关注
  • 845 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号