diff --git a/src/Illuminate/Redis/RedisManager.php b/src/Illuminate/Redis/RedisManager.php index 3d01818da2ae..b1c8e909ae5b 100644 --- a/src/Illuminate/Redis/RedisManager.php +++ b/src/Illuminate/Redis/RedisManager.php @@ -8,6 +8,7 @@ use Illuminate\Redis\Connectors\PhpRedisConnector; use Illuminate\Redis\Connectors\PredisConnector; use Illuminate\Support\ConfigurationUrlParser; +use Illuminate\Support\Arr; use InvalidArgumentException; /** @@ -108,7 +109,7 @@ public function resolve($name = null) if (isset($this->config[$name])) { return $this->connector()->connect( $this->parseConnectionConfiguration($this->config[$name]), - $options + array_merge(Arr::except($options, 'parameters'), ['parameters' => Arr::get($options, 'parameters.'.$name, Arr::get($options, 'parameters', []))]) ); } diff --git a/tests/Redis/RedisConnectorTest.php b/tests/Redis/RedisConnectorTest.php index c75cefde41f3..decbb6ffb5e1 100644 --- a/tests/Redis/RedisConnectorTest.php +++ b/tests/Redis/RedisConnectorTest.php @@ -181,4 +181,30 @@ public function testPredisConfigurationWithUsername() $this->assertEquals($username, $parameters->username); $this->assertEquals($password, $parameters->password); } + + public function testPredisConfigurationWithSentinel() + { + $host = env('REDIS_HOST', '127.0.0.1'); + $port = env('REDIS_PORT', 6379); + + $predis = new RedisManager(new Application, 'predis', [ + 'cluster' => false, + 'options' => [ + 'replication' => 'sentinel', + 'service' => 'mymaster', + 'parameters' => [ + 'default' => [ + 'database' => 5, + ] + ] + ], + 'default' => [ + "tcp://{$host}:{$port}", + ], + ]); + + $predisClient = $predis->connection()->client(); + $parameters = $predisClient->getConnection()->getSentinelConnection()->getParameters(); + $this->assertEquals($host, $parameters->host); + } }