gpt4 book ai didi

php - 无法在Laravel命令中创建多个Redis连接

转载 作者:行者123 更新时间:2023-12-03 06:42:25 24 4
gpt4 key购买 nike

我正在尝试在Laravel Command中创建多个Redis连接。它只是让我在其中创建一个连接,而对于其他连接,它会因错误而失败

InvalidArgumentException  : Redis connection [redis_db] not configured.

at /vendor/laravel/framework/src/Illuminate/Redis/RedisManager.php:116

我的 database.php看起来像
    'redis' => ['client' => env('REDIS_CLIENT', 'predis'),

'options' => [
'cluster' => env('REDIS_CLUSTER', 'predis'),
'prefix' => Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_',
],

'psh' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 5),
],

'redis_db' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 3),
],
],

我在命令文件中创建的连接如下所示:
/**
* Create a new command instance.
*/
public function __construct()
{
parent::__construct();
$this->redis = Redis::connection('psh');
$this->redisAbTest = Redis::connection('redis_db');
}

我已经在 .env文件中添加了Redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

Redis是 "predis/predis": "^1.1",,laravel是 5.8.17

最佳答案

您需要多个redis连接,您需要为每个连接打开一个新的服务提供程序并将服务提供程序添加到config/app.php中。然后你可以使用像

Redis::connection('psh');
class RedisPshProvider extends ServiceProvider
{
protected $defer = true;

public function register()
{
$this->app->singleton('psh', function ($app) {
return new RedisManager($app, 'predis', $app['config']['database.psh']);
});
}

public function provides()
{
return ['psh'];
}
}

如果需要另一个,请打开另一个服务提供商,用其他连接名称替换 psh
'providers' => [
// other providers
App\Providers\RedisPshProvider::class,
];

关于php - 无法在Laravel命令中创建多个Redis连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62341777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com