使用Redis为单台服务器上的多个Laravel应用程序设置队列

kcwpcxri  于 2023-01-12  发布在  Redis
关注(0)|答案(4)|浏览(218)

我有一个生产laravel应用程序和临时应用程序运行在同一台服务器上,我运行的是redis,我用它作为我的队列驱动程序,它们显然连接到不同的数据库,问题是从临时应用程序推送到reds队列的作业是否会干扰生产数据库,反之亦然。

643ylb08

643ylb081#

我也遇到过同样的问题,花了几个小时才找到解决办法。
https://laravel.com/docs/5.6/queues#driver-prerequisites :
为了使用redis队列驱动程序,您需要在config/database.php配置文件中配置一个Redis数据库连接。
然后https://laravel.com/docs/5.6/redis#predis说:
除了默认的hostportdatabasepassword服务器配置选项外,Predis还支持为每台Redis服务器定义额外的connection parameters配置选项。要使用这些额外的配置选项,请将它们添加到您的Redis服务器配置文件config/database.php中。
在阅读“连接参数”页面时,我最终找到了https://github.com/nrk/predis/wiki/Client-Options,它说“前缀”是一个受支持的选项。
因此,您可以编辑config/database.php配置文件,使其具有:

'redis' => [
        'client' => 'predis',
        'cluster' => false,
        'options'=>[
            'prefix' => env('REDIS_PREFIX', 'YOUR_PREFIX_HERE')
        ],
        'default' => [
            'host'     => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port'     => env('REDIS_PORT', 6379),
            'database' => 0,
        ],
    ],

我不确定你是否需要重新启动Redis或Supervisord。

bnlyeluc

bnlyeluc2#

您可以设置Laravel用于Redis缓存的前缀,默认情况下为laravel,所以所有的键都存储为laravel:keyname,Laravel负责在保存/获取时添加/删除前缀的逻辑。
你可以将前缀设置为config/cache.php,也可以将主应用的前缀设置为laravel,而将过渡应用的前缀设置为stage或其他,这意味着多个Laravel应用可以使用同一个Redis示例。

wgxvkvu9

wgxvkvu93#

Laravel 5.5.22开始该高速缓存前缀使用APP_NAME环境变量,如果这足够的话,你可以依赖它,或者你可以使用CACHE_PREFIX环境变量来配置前缀,默认情况下没有设置。

如果您使用Laravel Horizon来管理队列,只需覆盖HORIZON_PREFIX环境变量,让Horizon区分并行运行的应用程序。

ugmeyewa

ugmeyewa4#

您可以在.env中为Redis设置默认的Laravel队列。

REDIS_QUEUE=your_app1_queuename

默认情况下为'default',
这在config/queue.php中使用。这意味着多个Laravel应用可以使用同一个Redis示例。

相关问题