private function parseUrl($target)
{
if ($target === null) {
$target = 'tcp://127.0.0.1';
}
if (strpos($target, '://') === false) {
$target = 'tcp://' . $target;
}
$parts = parse_url($target);
if ($parts === false || !isset($parts['host']) || $parts['scheme'] !== 'tcp') {
throw new InvalidArgumentException('Given URL can not be parsed');
}
if (!isset($parts['port'])) {
$parts['port'] = 6379;
}
if ($parts['host'] === 'localhost') {
$parts['host'] = '127.0.0.1';
}
$auth = null;
if (isset($parts['user'])) {
$auth = $parts['user'];
}
if (isset($parts['pass'])) {
$auth .= ':' . $parts['pass'];
}
if ($auth !== null) {
$parts['auth'] = $auth;
}
if (isset($parts['path']) && $parts['path'] !== '') {
// skip first slash
$parts['db'] = substr($parts['path'], 1);
}
unset($parts['scheme'], $parts['user'], $parts['pass'], $parts['path']);
return $parts;
}