diff --git a/lib/Redis.php b/lib/Redis.php index 0ccf487..f2b0928 100644 --- a/lib/Redis.php +++ b/lib/Redis.php @@ -223,7 +223,7 @@ public static function parseDsn($dsn) $parts = parse_url($dsn); // Check the URI scheme - $validSchemes = array('redis', 'rediss', 'tcp'); + $validSchemes = array('redis', 'tcp', 'rediss', 'tls', 'ssl'); if (isset($parts['scheme']) && ! in_array($parts['scheme'], $validSchemes)) { throw new InvalidArgumentException("Invalid DSN. Supported schemes are " . implode(', ', $validSchemes)); } @@ -266,8 +266,15 @@ public static function parseDsn($dsn) $pass = isset($parts['pass']) ? $parts['pass'] : false; } + $host = $parts['host']; + + if (isset($parts['scheme']) && in_array($parts['scheme'], [ 'tls', 'ssl', 'rediss' ])) { + $scheme = $parts['scheme'] === 'rediss' ? 'tls' : $parts['scheme']; + $host = $scheme . '://' . $parts['host']; + } + return array( - $parts['host'], + $host, $port, $database, $user,