PHP+Redis实现简单消息队列

时间:2017-05-04作者:klpeng分类:PHP浏览:3424评论:0

php结合redis可以实现一些简单逻辑的队列操作,主要是用到rpush、lpush、rpop、lpop这几个函数


下面演示一个先进先出的队列示例:


入队列:

$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
$redis->rpush('dotask', 1);    //把值1插入到dotask列表的尾部
$redis->rpush('dotask', 2);


出队列:

while(true){
   $pid = pcntl_fork();        
   if ($pid == -1) {
      //创建子进程失败      
   } else if ($pid==0) {
     $redis = new Redis();
     $redis->connect('127.0.0.1', 6379);           
     $mq = $redis->lpop('dotask'); //移除弹出dotask列表的头元素(出栈),这里也可以用阻塞式的blpop   
      //dotask 做一些事情
   } else {
      //主进程等待
     pcntl_wait($status);
   }
}


这是最简化版的一个例子,用在一些秒杀场景缓解数据库压力还是可以的,如果是大规模应用,建议还是要用专业MQ

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
上一篇:Laravel优化性能 下一篇:PHP数组快速去重
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢