我有一个生产laravel应用程序和临时应用程序运行在同一台服务器上,我运行的是redis,我用它作为我的队列驱动程序,它们显然连接到不同的数据库,问题是从临时应用程序推送到reds队列的作业是否会干扰生产数据库,反之亦然。
643ylb081#
我也遇到过同样的问题,花了几个小时才找到解决办法。https://laravel.com/docs/5.6/queues#driver-prerequisites :为了使用redis队列驱动程序,您需要在config/database.php配置文件中配置一个Redis数据库连接。然后https://laravel.com/docs/5.6/redis#predis说:除了默认的host,port,database和password服务器配置选项外,Predis还支持为每台Redis服务器定义额外的connection parameters配置选项。要使用这些额外的配置选项,请将它们添加到您的Redis服务器配置文件config/database.php中。在阅读“连接参数”页面时,我最终找到了https://github.com/nrk/predis/wiki/Client-Options,它说“前缀”是一个受支持的选项。因此,您可以编辑config/database.php配置文件,使其具有:
redis
config/database.php
host
port
database
password
'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。
bnlyeluc2#
您可以设置Laravel用于Redis缓存的前缀,默认情况下为laravel,所以所有的键都存储为laravel:keyname,Laravel负责在保存/获取时添加/删除前缀的逻辑。你可以将前缀设置为config/cache.php,也可以将主应用的前缀设置为laravel,而将过渡应用的前缀设置为stage或其他,这意味着多个Laravel应用可以使用同一个Redis示例。
laravel
laravel:keyname
config/cache.php
stage
wgxvkvu93#
从Laravel 5.5.22开始该高速缓存前缀使用APP_NAME环境变量,如果这足够的话,你可以依赖它,或者你可以使用CACHE_PREFIX环境变量来配置前缀,默认情况下没有设置。
APP_NAME
CACHE_PREFIX
如果您使用Laravel Horizon来管理队列,只需覆盖HORIZON_PREFIX环境变量,让Horizon区分并行运行的应用程序。
HORIZON_PREFIX
ugmeyewa4#
您可以在.env中为Redis设置默认的Laravel队列。
REDIS_QUEUE=your_app1_queuename
默认情况下为'default',这在config/queue.php中使用。这意味着多个Laravel应用可以使用同一个Redis示例。
4条答案
按热度按时间643ylb081#
我也遇到过同样的问题,花了几个小时才找到解决办法。
https://laravel.com/docs/5.6/queues#driver-prerequisites :
为了使用
redis
队列驱动程序,您需要在config/database.php
配置文件中配置一个Redis数据库连接。然后https://laravel.com/docs/5.6/redis#predis说:
除了默认的
host
,port
,database
和password
服务器配置选项外,Predis还支持为每台Redis服务器定义额外的connection parameters配置选项。要使用这些额外的配置选项,请将它们添加到您的Redis服务器配置文件config/database.php
中。在阅读“连接参数”页面时,我最终找到了https://github.com/nrk/predis/wiki/Client-Options,它说“前缀”是一个受支持的选项。
因此,您可以编辑
config/database.php
配置文件,使其具有:我不确定你是否需要重新启动Redis或Supervisord。
bnlyeluc2#
您可以设置Laravel用于Redis缓存的前缀,默认情况下为
laravel
,所以所有的键都存储为laravel:keyname
,Laravel负责在保存/获取时添加/删除前缀的逻辑。你可以将前缀设置为
config/cache.php
,也可以将主应用的前缀设置为laravel
,而将过渡应用的前缀设置为stage
或其他,这意味着多个Laravel应用可以使用同一个Redis示例。wgxvkvu93#
从Laravel 5.5.22开始该高速缓存前缀使用
APP_NAME
环境变量,如果这足够的话,你可以依赖它,或者你可以使用CACHE_PREFIX
环境变量来配置前缀,默认情况下没有设置。如果您使用Laravel Horizon来管理队列,只需覆盖
HORIZON_PREFIX
环境变量,让Horizon区分并行运行的应用程序。ugmeyewa4#
您可以在.env中为Redis设置默认的Laravel队列。
默认情况下为'default',
这在config/queue.php中使用。这意味着多个Laravel应用可以使用同一个Redis示例。