Redis 的订阅与发布

第一次写写文章,不好的地方请多多包涵

因为需要用redis的订阅与发布所以研究了一下,明白后发现其实挺简单的,但是自己中间自己也走了很多的弯路,所以记录一下。

第一步:使用 php artisan make:command RedisSubscribe 创建命令会在/app/Console/Commands/目录下生成RedisSubscribe.php文件

<?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对象是为了避免当redis有发布是不能有其他的操作
        $redis = Redis::connection('publisher');

        $redis->psubscribe(['test'], function ($message) {
            Redis::set('2', $message);
        });
    }
}

第二步:使用subscribe test 监控频道test

redis的订阅与发布
注意:一定要在运行的环境上执行 php artisan redis:subscribe否则会看不到信息输出信息的,因为本人就在上面走了弯路,代码运行的是homestead的环境上,但是在PHPstorm上运行的php artisan redis:subscribe后来发现自己特别的傻。

第三步

<?php

namespace App\Http\Controllers\API;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redis;
use Illuminate\Http\Request;


class MonitorNewController extends Controller
{
    public function handleRedis(Request $request)
    {
        // 这里redis的链接也是为了避免当redis有发布是不能有其他的操作
        $redis = Redis::connection('default');
        $redis->publish('test', $request->get('name'));
    }

}

在api中设置路由访问handleRedis 方法就能看到上图的中结果。好了到此就算完成了redis的发布和订阅。

下面介绍一下在homestead环境中使用后台进程完成永久监控。

一种情况使用nohup监控,一种使用screen监控 不过这两个都需要安装一下

安装nohup 命令 sudo apt-get install coreutils
安装后使用命令 nohup php artisan redis:subscribe 注意 这个命令需要到项目的根目录下去执行,否则会报打不开artisan文件

另外一种情况是使用screen开启进程

安装命令 apt-get install screen
安装完成后使用 screen -S [Process name] (你的进程名称)注意 这个也是需要在项目的根目录中运行,否则在screen中执行 php artisan redis:subscribe 命令也是无法打开 artisan的错误。
screen 中执行 php artisan redis:subscribe 命令。到此redis的订阅和发布完成。

第一次写文章,不好的地方请大家多多谅解。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!