Redis-Phần 5:Pub / Sub Laravel

Laravel cũng cung cấp một interface tiện ích cho hai lệnh của Redis là publish và subscribe. Những câu lệnh này cho phép bạn listen bản tin trên một “channel”. Bạn có thể publish bản tin tới một channel từ ứng dụng khác, hoặc thậm chí sử dụng một ngôn ngữ lập trình khác, cho phép trao đổi dễ dàng giữa các ứng dụng và processes.

Đầu tiện, hãy cùng nhau thiết lập một listener trên một channel thông qua Redis sử dụng hàm subscribe. Chúng ta sẽ đặt hàm gọi này bên trong câu lệnh Artisan vì việc gọi hàm subscribe bắt đầu một tiến trình chạy lâu:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis;
class RedisSubscribe extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'redis:subscribe';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        Redis::subscribe(['test-channel'], function($message) {
            echo $message;
        });
    }
}

Lúc này, chúng ta có thể publish bản tin tới channel sử dụng publish:

Route::get('publish', function () {
    // Route logic...

    Redis::publish('test-channel', json_encode(['foo' => 'bar']));
});