Add RedisConnection class for managing Redis connections
Some checks are pending
CI / release (push) Waiting to run
CI / debug (push) Waiting to run
CI / check-phpunit (push) Waiting to run
CI / check-phpdoc (push) Waiting to run
CI / generate-phpdoc (push) Blocked by required conditions
CI / test (push) Blocked by required conditions
CI / release-documentation (push) Blocked by required conditions
CI / release-artifacts (push) Blocked by required conditions

This commit is contained in:
netkas 2025-05-29 15:57:51 -04:00
parent d28d4d06f2
commit 865b0c1b8e
Signed by: netkas
GPG key ID: 4D8629441B76E4CC

View file

@ -0,0 +1,43 @@
<?php
namespace FederationServer\Classes;
use Redis;
use FederationServer\Classes\Configuration;
use FederationServer\Classes\Configuration\RedisConfiguration;
class RedisConnection
{
private static ?Redis $redis = null;
/**
* Get the Redis connection instance. If it does not exist, create it using the configuration.
*
* @return Redis|null Returns Redis instance if enabled, otherwise null.
* @throws \RedisException
*/
public static function getConnection(): ?Redis
{
if (self::$redis === null)
{
$redisConfig = Configuration::getRedisConfiguration();
if (!$redisConfig->isEnabled())
{
return null;
}
$redis = new Redis();
$redis->connect($redisConfig->getHost(), $redisConfig->getPort());
if ($redisConfig->getPassword() !== null)
{
$redis->auth($redisConfig->getPassword());
}
$redis->select($redisConfig->getDatabase());
self::$redis = $redis;
}
return self::$redis;
}
}