[snappymail] Improve Redis support

By using a connection URL, it is possible to support all Predis features, like
passwords, unix sockets, database selection, etc.

Tested with TCP and unix socket connections.

Closes #113
This commit is contained in:
David Härdeman 2021-08-21 13:32:17 +02:00
parent cc03546484
commit 465e4b32ee
3 changed files with 6 additions and 17 deletions

View file

@ -21,12 +21,7 @@ class Redis implements \MailSo\Cache\DriverInterface
/**
* @var string
*/
private $sHost;
/**
* @var int
*/
private $iPost;
private $sUrl;
/**
* @var int
@ -43,20 +38,16 @@ class Redis implements \MailSo\Cache\DriverInterface
*/
private $sKeyPrefix;
function __construct(string $sHost = '127.0.0.1', int $iPost = 6379, int $iExpire = 43200, string $sKeyPrefix = '')
function __construct(string $sUrl = 'redis://127.0.0.1:6379', int $iExpire = 43200, string $sKeyPrefix = '')
{
$this->sHost = $sHost;
$this->iPost = $iPost;
$this->sUrl = $sUrl;
$this->iExpire = 0 < $iExpire ? $iExpire : 43200;
$this->oRedis = null;
try
{
$this->oRedis = new \Predis\Client('unix:' === substr($sHost, 0, 5) ? $sHost : array(
'host' => $sHost,
'port' => $iPost
));
$this->oRedis = new \Predis\Client($sUrl);
$this->oRedis->connect();

View file

@ -706,8 +706,7 @@ class Actions
case 'REDIS' === $sDriver && \class_exists('Predis\Client'):
$oDriver = new \MailSo\Cache\Drivers\Redis(
$this->Config()->Get('labs', 'fast_cache_redis_host', '127.0.0.1'),
(int)$this->Config()->Get('labs', 'fast_cache_redis_port', 6379),
$this->Config()->Get('labs', 'fast_cache_redis_url', 'redis://127.0.0.1:6379'),
43200,
$sKey
);

View file

@ -367,8 +367,7 @@ Enables caching in the system'),
'http_client_ip_check_proxy' => array(false),
'fast_cache_memcache_host' => array('127.0.0.1'),
'fast_cache_memcache_port' => array(11211),
'fast_cache_redis_host' => array('127.0.0.1'),
'fast_cache_redis_port' => array(6379),
'fast_cache_redis_url' => array('redis://127.0.0.1:6379'),
'use_local_proxy_for_external_images' => array(true),
'detect_image_exif_orientation' => array(true),
'cookie_default_path' => array(''),