Redis Queue in Laravel: キューイングの処理

では Laravel、 Redis Queue 実行時間が長く時間のかかるタスクを、完了を待たずに処理するために使用される強力なツールです。 を使用すると Redis Queue 、電子メールの送信、バックグラウンド タスクの処理、レポートの生成などのタスクをキューに入れて非同期に実行できるため、アプリケーションのパフォーマンスが向上し、ユーザー エクスペリエンスが向上します。

Redis Queue で 使用するための基本的な手順 Laravel

構成、設定 Redis

Redis まず、に インストールして設定する必要があります Laravel。 Redis Composer 経由でパッケージ をインストールし、ファイル Redis に接続パラメータを設定していることを確認してください .env

CACHE_DRIVER=redis  
REDIS_HOST=127.0.0.1  
REDIS_PASSWORD=null  
REDIS_PORT=6379  

ジョブの定義

次に、キューに入れるジョブを定義する必要があります。 これらのジョブは、アプリケーションのメイン処理とは独立して非同期に実行されます。

// Example defining a job to send an email  
namespace App\Jobs;  
  
use Illuminate\Bus\Queueable;  
use Illuminate\Contracts\Queue\ShouldQueue;  
use Illuminate\Foundation\Bus\Dispatchable;  
use Illuminate\Queue\InteractsWithQueue;  
use Illuminate\Queue\SerializesModels;  
use Illuminate\Support\Facades\Mail;  
  
class SendEmailJob implements ShouldQueue  
{  
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;  
  
    protected $user;  
  
    public function __construct($user)  
    {  
        $this->user = $user;  
    }  
  
    public function handle()  
    {  
        // Handle sending an email to the user  
        Mail::to($this->user->email)->send(new WelcomeEmail());  
    }  
}  

ジョブをキューに入れる

ジョブを実行する場合は、 dispatch または dispatchNow 関数を使用してジョブをキューに追加するだけです。

use App\Jobs\SendEmailJob;  
use Illuminate\Support\Facades\Queue;  
  
// Put the job into the queue and perform asynchronously  
Queue::push(new SendEmailJob($user));  
  
// Put the job into the queue and perform synchronously(without waiting)  
Queue::push(new SendEmailJob($user))->dispatchNow();  

キューからジョブを処理する

Worker ジョブがキューに追加された後、キュー内のジョブを実行するように を 設定する必要があります。 を実行するための Laravel が付属しています: artisan command worker

php artisan queue:work

は worker キュー内のジョブを継続的にリッスンして実行します。 worker ジョブの数と処理ラウンド間の待機時間を処理するように を 設定できます。

キュー内のジョブを管理する

Laravel は、キュー内のジョブを監視および制御できる管理インターフェイスを提供します。 保留中のジョブの数、処理時間を表示し、失敗したジョブを再試行することもできます。

 

結論 Redis Queue in を使用することは、 Laravel アプリケーションのメイン処理を中断することなく、長時間実行されるタスクを処理する効率的な方法です。 を使用すると Redis Queue 、アプリケーションのパフォーマンスが向上し、ユーザー エクスペリエンスが向上します。