Skip to content

Commit

Permalink
Update: 修复 reset 适配
Browse files Browse the repository at this point in the history
  • Loading branch information
NHZEX committed Feb 17, 2024
1 parent 06e4d39 commit 788a01f
Show file tree
Hide file tree
Showing 11 changed files with 39 additions and 18 deletions.
6 changes: 3 additions & 3 deletions src/Components/redis/src/Connector/PhpRedisConnector.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ public static function connect(RedisDriverConfig $config): PhpRedisHandler
{
throw new \RedisException($redis->getLastError());
}
if (null !== $config->database && !$redis->select($config->database) && null !== $redis->getLastError())
if (!$redis->select($config->database) && null !== $redis->getLastError())
{
throw new \RedisException($redis->getLastError());
}

self::applyOptions($redis, $config);

return new PhpRedisHandler($redis);
return new PhpRedisHandler($redis, $config);
}

public static function connectCluster(RedisDriverConfig $config): PhpRedisClusterHandler
Expand All @@ -51,7 +51,7 @@ public static function connectCluster(RedisDriverConfig $config): PhpRedisCluste

self::applyOptions($redis, $config);

return new PhpRedisClusterHandler($redis);
return new PhpRedisClusterHandler($redis, $config);
}

protected static function applyOptions(\Redis|\RedisCluster $redis, RedisDriverConfig $config): void
Expand Down
9 changes: 3 additions & 6 deletions src/Components/redis/src/Connector/PredisConnector.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,20 @@ public static function connect(RedisDriverConfig $config): PredisHandler
'scheme' => 'tcp',
'host' => $config->host,
'port' => $config->port,
'database' => $config->database,
];
if ($config->password)
{
$params['password'] = $config->password;
}
if (null !== $config->database)
{
$params['database'] = $config->database;
}
if ($config->prefix)
{
$params['prefix'] = $config->prefix;
}
$client = new \Predis\Client($params);
$client->connect();

return new PredisHandler($client);
return new PredisHandler($client, $config);
}

public static function connectCluster(RedisDriverConfig $config): PredisClusterHandler
Expand All @@ -58,6 +55,6 @@ public static function connectCluster(RedisDriverConfig $config): PredisClusterH
$client = new \Predis\Client($seeds, $options);
$client->connect();

return new PredisClusterHandler($client);
return new PredisClusterHandler($client, $config);
}
}
9 changes: 9 additions & 0 deletions src/Components/redis/src/Connector/RedisConnectionDriver.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
use Imi\ConnectionCenter\Contract\IConnectionConfig;
use Imi\Redis\Enum\RedisMode;
use Imi\Redis\Handler\IRedisHandler;
use Imi\Redis\Handler\PhpRedisHandler;
use Imi\Redis\Handler\PredisHandler;

class RedisConnectionDriver extends AbstractConnectionDriver
{
Expand Down Expand Up @@ -58,6 +60,13 @@ public function close(object $instance): void
*/
public function reset(object $instance): void
{
if (
!$instance->isCluster()
&& $instance->isConnected()
&& ($db = $instance->getConnectionConfig()->database) !== $instance->getDBNum()
) {
$instance->select($db);
}
}

/**
Expand Down
4 changes: 2 additions & 2 deletions src/Components/redis/src/Connector/RedisDriverConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public function __construct(
public readonly ?int $port,
public readonly ?array $seeds,
public readonly ?string $password,
public readonly ?int $database,
public readonly int $database,
public readonly string $prefix,
public readonly float $timeout,
public readonly float $readTimeout,
Expand All @@ -36,7 +36,7 @@ protected static function __create(array $config): self
port: (int) ($config['port'] ?? 6379),
seeds: $config['seeds'] ?? null,
password: $config['password'] ?? null,
database: \array_key_exists('database', $config) ? $config['database'] : 0,
database: $config['database'] ?? 0,
prefix: $config['prefix'] ?? '',
timeout: (float) ($config['timeout'] ?? 3.0),
readTimeout: (float) ($config['readTimeout'] ?? 3.0),
Expand Down
9 changes: 9 additions & 0 deletions src/Components/redis/src/Handler/AbstractRedisHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,21 @@

namespace Imi\Redis\Handler;

use Imi\Redis\Connector\RedisDriverConfig;

abstract class AbstractRedisHandler implements IRedisScanExMethod
{
protected RedisDriverConfig $config;

abstract public function isConnected(): bool;

public function isCluster(): bool
{
return $this instanceof IRedisClusterHandler;
}

public function getConnectionConfig(): RedisDriverConfig
{
return $this->config;
}
}
1 change: 1 addition & 0 deletions src/Components/redis/src/Handler/IRedisHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ interface IRedisHandler
{
public function getInstance(): object;

public function isCluster(): bool;
public function isSupportSerialize(): bool;
}
7 changes: 3 additions & 4 deletions src/Components/redis/src/Handler/PhpRedisClusterHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Imi\Redis\Handler;

use Imi\Redis\Connector\RedisDriverConfig;
use Imi\Redis\Traits\TPhpRedisMethod;
use RedisCluster;

Expand All @@ -14,12 +15,10 @@ class PhpRedisClusterHandler extends AbstractRedisHandler implements IRedisClust
{
use TPhpRedisMethod;

protected \RedisCluster $client;

public function __construct(
\RedisCluster $client,
protected \RedisCluster $client,
protected RedisDriverConfig $config,
) {
$this->client = $client;
}

public function getInstance(): \RedisCluster
Expand Down
2 changes: 2 additions & 0 deletions src/Components/redis/src/Handler/PhpRedisHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Imi\Redis\Handler;

use Imi\Redis\Connector\RedisDriverConfig;
use Imi\Redis\Traits\TPhpRedisMethod;
use Redis;

Expand All @@ -16,6 +17,7 @@ class PhpRedisHandler extends AbstractRedisHandler implements IRedisHandler

public function __construct(
protected \Redis $client,
protected RedisDriverConfig $config,
) {
}

Expand Down
4 changes: 3 additions & 1 deletion src/Components/redis/src/Handler/PredisClusterHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Imi\Redis\Handler;

use Imi\Redis\Connector\RedisDriverConfig;
use Imi\Redis\Traits\TPredisMethod;
use Predis\Client;
use Predis\Connection\Cluster\RedisCluster;
Expand All @@ -16,7 +17,8 @@ class PredisClusterHandler extends AbstractRedisHandler implements IRedisCluster
use TPredisMethod;

public function __construct(
private Client $client,
protected Client $client,
protected RedisDriverConfig $config,
) {
}

Expand Down
4 changes: 3 additions & 1 deletion src/Components/redis/src/Handler/PredisHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Imi\Redis\Handler;

use Imi\Redis\Connector\RedisDriverConfig;
use Imi\Redis\Traits\TPredisMethod;
use Predis\Client;

Expand All @@ -15,7 +16,8 @@ class PredisHandler extends AbstractRedisHandler implements IRedisHandler
use TPredisMethod;

public function __construct(
private Client $client,
protected Client $client,
protected RedisDriverConfig $config,
) {
}

Expand Down
2 changes: 1 addition & 1 deletion src/Components/redis/src/Traits/TPredisMethod.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

trait TPredisMethod
{
public function getDBNum()
public function getDBNum(): int
{
// 不建议使用,性能差
if ($this->isCluster())
Expand Down

0 comments on commit 788a01f

Please sign in to comment.