refactor(redis): refine connection handling and pool singleton initialization
- Mark `RedisConnection::$connected` as read-only with `private(set)`. - Simplify authentication and database selection logic in `RedisConnection`. - Comment out DI container singleton registration in `RedisPoolInitializer`. - Annotate `RedisConnectionPool` with `#[Singleton]` attribute for improved clarity.
This commit is contained in:
@@ -14,7 +14,7 @@ final class RedisConnection implements RedisConnectionInterface
|
||||
{
|
||||
private Redis $client;
|
||||
|
||||
private bool $connected = false;
|
||||
private(set) bool $connected = false;
|
||||
|
||||
public function __construct(
|
||||
private readonly RedisConfig $config,
|
||||
@@ -89,15 +89,14 @@ final class RedisConnection implements RedisConnectionInterface
|
||||
}
|
||||
|
||||
// Authenticate if a password is provided
|
||||
if ($this->config->password) {
|
||||
if (! $this->client->auth($this->config->password)) {
|
||||
throw new RedisConnectionException("Redis authentication failed");
|
||||
}
|
||||
|
||||
if ($this->client->auth($this->config->password) === false) {
|
||||
throw new RedisConnectionException("Redis authentication failed");
|
||||
}
|
||||
|
||||
// Select database
|
||||
if ($this->config->database > 0) {
|
||||
if (! $this->client->select($this->config->database)) {
|
||||
if ($this->client->select($this->config->database) === false) {
|
||||
throw new RedisConnectionException("Failed to select Redis database {$this->config->database}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,14 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Framework\Redis;
|
||||
|
||||
use App\Framework\Attributes\Singleton;
|
||||
use InvalidArgumentException;
|
||||
|
||||
/**
|
||||
* Redis connection pool that manages multiple named connections
|
||||
* for different purposes (cache, queue, sessions, etc.)
|
||||
*/
|
||||
#[Singleton]
|
||||
final class RedisConnectionPool
|
||||
{
|
||||
/** @var array<string, RedisConnectionInterface> */
|
||||
|
||||
@@ -14,7 +14,6 @@ use App\Framework\DI\Initializer;
|
||||
final readonly class RedisPoolInitializer
|
||||
{
|
||||
public function __construct(
|
||||
private Container $container,
|
||||
private Environment $environment,
|
||||
) {
|
||||
}
|
||||
@@ -46,7 +45,7 @@ final readonly class RedisPoolInitializer
|
||||
// Remove dynamic configuration loading since we're removing Configuration.php
|
||||
|
||||
// Register pool as singleton in DI container
|
||||
$this->container->singleton(RedisConnectionPool::class, $pool);
|
||||
#$this->container->singleton(RedisConnectionPool::class, $pool);
|
||||
|
||||
return $pool;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user