This commit is contained in:
2021-12-06 15:47:12 +08:00
parent 3176443e5c
commit b3e06a680a
3 changed files with 26 additions and 18 deletions
+24 -12
View File
@@ -22,9 +22,21 @@ class Redis implements StopHeartbeatCheck
private ?\Redis $pdo = null;
public string $host;
private int $_transaction = 0;
public int $port;
public int $database = 0;
public string $auth = '';
public string $prefix = '';
public int $timeout = 30;
public int $read_timeout = 30;
public array $pool = [];
private int $_timer = -1;
@@ -32,18 +44,18 @@ class Redis implements StopHeartbeatCheck
/**
* @param string $host
* @param int $port
* @param int $database
* @param string $auth
* @param string $prefix
* @param int $timeout
* @param int $read_timeout
* @param array $config
*/
public function __construct(public string $host, public int $port, public int $database = 0,
public string $auth = '', public string $prefix = '', public int $timeout = 30,
public int $read_timeout = 30)
public function __construct(array $config)
{
$this->host = $config['host'];
$this->port = $config['port'];
$this->database = $config['database'];
$this->auth = $config['auth'];
$this->prefix = $config['prefix'];
$this->timeout = $config['timeout'];
$this->read_timeout = $config['read_timeout'];
$this->pool = $config['pool'];
}
@@ -77,7 +89,7 @@ class Redis implements StopHeartbeatCheck
Kiri::getDi()->get(Logger::class)->critical('timer end');
$this->stopHeartbeatCheck();
}
if (time() - $this->_last > 10 * 60) {
if (time() - $this->_last > intval($this->pool['tick'] ?? 60)) {
$this->stopHeartbeatCheck();
$this->pdo = null;
}
+1 -1
View File
@@ -45,7 +45,7 @@ class Redis extends Component
$config = $this->get_config();
$length = Config::get('connections.pool.max', 10);
$length = Config::get('cache.redis.pool.max', 10);
$this->eventProvider->on(OnWorkerExit::class, [$this, 'destroy'], 0);
+1 -5
View File
@@ -50,11 +50,7 @@ class Redis extends Component
public function create(string $name, mixed $config): Closure
{
return static function () use ($name, $config) {
return Kiri::getDi()->create(\Kiri\Cache\Base\Redis::class, [
$config['host'], (int)$config['port'], $config['databases'] ?? 0,
$config['auth'], $config['prefix'] ?? '', $config['timeout'] ?? 30,
$config['read_timeout'] ?? 30
]);
return Kiri::getDi()->create(\Kiri\Cache\Base\Redis::class, $config);
};
}