laravel自带队列和redis实现队列哪个效率高

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel自带队列和redis实现队列哪个效率高相关的知识,希望对你有一定的参考价值。

参考技术A redis只能负责数据的存储,对于队列的维护,还得自己代码操作 比如你自己定义一个队列长度、队列放到redis中,自己实现定长队列操作本回答被提问者采纳 参考技术B 一般来说,在windows上配置开发环境是一个很艰苦的事情。 而vagrant的出现则是我们开发者的一个福利。大大的减轻了我们的配置的复杂新,但是虽然有所减轻,但还是要动手配一些的。话不多说,下面开始进入正题,首先来说下需要一些什么

Laravel Redis 发布订阅消息

Redis有一个重要的功能,即可发布、订阅消息,通过对消息的发布和订阅可以实现消息队列的功能。redis是通过publish和subscribe指令提供消息的发布和订阅的,通过订阅一个“队列”用于监听消息,当有消息通过publish指令发布到“队列”中时,订阅程序就会监听到消息并进行响应。

下面讲述一下Laravel的实现

Laravel中可以使用artisan命令“php artisan make:console  SendMsg --command=Send:Msg” 来创建一个订阅类,并修改该类的handle()函数,通过Reids::subscribe()方式订阅一个“队列”,但是,只创建一个控制台指令类还是不行的,需要将改类在控制台核心类(App\Console\Kerenl)的“$commands”属性中进行注册才能生效。具体实现代码如下:


<?php 

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis as Redis;

class SendMsg extends Command
{
   //控制台指令名称
   protected $signature = 'Send:Msg';

  //控制台指令的描述
   protected $description = '发布、订阅';

   /**
    * Create a new command instance.
    *
    * @return void
    */

   public function __construct()
   
{
       parent::__construct();
   }

   /**
    * Execute the console command.
    *
    * @return mixed
    */

   public function handle()
   
{
      Redis::subscribe(['redis-msg'],function($message){
          echo $message;
      });
   }
}


找到文件app\Console\Kernel.php 添加如下代码


//应用中提供artisan命令  www.bcty365.com B5教程网 

protected $commands =[
    \App\Console\Commands\Inspire::class,
    \App\Console\Commands\SendMsg::class
]


下面建立路由测试


找到文件app\Http\routes.php添加如下代码


<?php 
Route::get('/',function(){
Redis::publish('redis-msg','测试发布订阅功能');
})



IT开发前线



以上是关于laravel自带队列和redis实现队列哪个效率高的主要内容,如果未能解决你的问题,请参考以下文章

redis怎么做消息队列

Laravel - Queue

Laravel Redis 发布订阅消息

laravel 队列使用(发邮件短信等)

Laravel 队列与 beanstalkd 和 redis 重复

Redis 实现消息队列 MQ