redis/jedis · error · InvalidURIException
Cannot open Redis connection due invalid URI.
Error message
Cannot open Redis connection due invalid URI. %s
What it means
Thrown in the JedisFactory URI constructor when the supplied URI cannot be converted to a valid host/port Redis connection — the URI is malformed, uses an unsupported scheme, or lacks a resolvable host. It is a fail-fast configuration guard before the pool creates any connections.
Solutions
- Use a well-formed URI such as redis://[:password@]host:port[/database] or rediss:// for TLS
- Validate the URI string before passing it (URI.create / new URI) to catch syntax errors
- Pass host/port parameters explicitly instead of a URI if the endpoint is assembled dynamically
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/main/java/redis/clients/jedis/JedisFactory.java:161 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of redis/jedis@6dac31d4c2 (2026-09-08).
Data as JSON: /api/errors/19111ec22d38de74.
Report an issue: GitHub.
Appendix: source
Thrown at src/main/java/redis/clients/jedis/JedisFactory.java:161
}
protected JedisFactory(final URI uri, final int connectionTimeout, final int soTimeout,
final String clientName) {
this(uri, connectionTimeout, soTimeout, clientName, null, null, null);
}
protected JedisFactory(final URI uri, final int connectionTimeout, final int soTimeout,
final String clientName, final SSLSocketFactory sslSocketFactory,
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
this(uri, connectionTimeout, soTimeout, 0, clientName, sslSocketFactory, sslParameters,
hostnameVerifier);
}
protected JedisFactory(final URI uri, final int connectionTimeout, final int soTimeout,
final int infiniteSoTimeout, final String clientName, final SSLSocketFactory sslSocketFactory,
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
if (!JedisURIHelper.isValid(uri)) {
throw new InvalidURIException(
String.format("Cannot open Redis connection due invalid URI. %s", uri.toString()));
}
this.clientConfig = legacyConfigBuilderWithoutProtocolNegotiation().connectionTimeoutMillis(connectionTimeout)
.socketTimeoutMillis(soTimeout).blockingSocketTimeoutMillis(infiniteSoTimeout)
.user(JedisURIHelper.getUser(uri)).password(JedisURIHelper.getPassword(uri))
.database(JedisURIHelper.getDBIndex(uri)).clientName(clientName)
.protocol(JedisURIHelper.getRedisProtocol(uri)).ssl(JedisURIHelper.isRedisSSLScheme(uri))
.sslSocketFactory(sslSocketFactory).sslParameters(sslParameters)
.hostnameVerifier(hostnameVerifier).build();
this.jedisSocketFactory = new DefaultJedisSocketFactory(
new HostAndPort(uri.getHost(), uri.getPort()), this.clientConfig);
}
void setHostAndPort(final HostAndPort hostAndPort) {
if (!(jedisSocketFactory instanceof DefaultJedisSocketFactory)) {
throw new IllegalStateException("setHostAndPort method has limited capability.");
}
((DefaultJedisSocketFactory) jedisSocketFactory).updateHostAndPort(hostAndPort);View on GitHub (pinned to 6dac31d4c2)