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','测试发布订阅功能');
})
以上是关于laravel自带队列和redis实现队列哪个效率高的主要内容,如果未能解决你的问题,请参考以下文章