laravel-监听redis-key过期的进行回调

5次阅读

共计 744 个字符,预计需要花费 2 分钟才能阅读完成。

1. 修改 redis 配置

开启 redis.conf 文件中 notify-keyspace-events Ex

或者 在 redis-cli 客户端输入如下命令:
config set notify-keyspace-events Ex

2. 修改 laravel database.php

//datebase.php 配置页面
'redis' => [
        'client' => 'predis',
        'default' => ['host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,
            "queue" => '{default}',//queue 站点默认走的 redis
        ],
        'publisher' => [ //redis 订阅监听
                    'host' => env('REDIS_HOST', '127.0.0.1'),
                    'password' => env('REDIS_PASSWORD', null),
                    'port' => env('REDIS_PORT', 6379),
                    'database' => 0,
                    "read_write_timeout"=>0,// 长连接不要断
                ],
           ]

3. 在脚本的地方实现监听方法

        $redis=Redis::connection('publisher');// 创建新的实例
        $redis->psubscribe(['__keyevent@*__:expired'], function ($message, $channel) {
            echo $channel.PHP_EOL;// 订阅的频道
            echo $message.PHP_EOL;// 过期的 key
            echo '---'.PHP_EOL;
        });

正文完
 0