redis.clients.jedis.exceptions.InvalidURIException: Cannot open Redis connection due invalid URI “localhost”.
at redis.clients.jedis.Jedis.(Jedis.java:148)
at redis.clients.jedis.Jedis.(Jedis.java:59)
at com.gift.www.TestRedisConnection.main(TestRedisConnection.java:8)
在尝试连接到Redis服务器时遇到了问题。错误信息显示程序无法打开Redis连接,因为无效的URI “localhost”。
解决:我这里错误的原因是没有给redis加默认端口(低级错误),把第五行这样改就好啦
Jedis jedis = new Jedis(“localhost”,6379);//加上6379端口号。
//错误代码为
public class TestRedisConnection {
public static void main(String[] args) {
//连接本地redis服务
Jedis jedis = new Jedis("localhost");
jedis.auth("root");//设置密码,若您没有设置过密码,这一行可以不要
try {
// 测试连接是否成功
jedis.ping();
System.out.println("Connection successful!");
} catch (Exception e) {
System.out.println("Connection failed: " + e.getMessage());
} finally {
// 记得关闭连接
if (jedis != null) {
jedis.close();
}
}
}
}
正确写法应该是:
public class TestRedisConnection {
public static void main(String[] args) {
//连接本地redis服务
Jedis jedis = new Jedis("localhost",6379);//加上6379端口号。
jedis.auth("root");//设置密码,若您没有设置过密码,这一行可以不要
try {
// 测试连接是否成功
jedis.ping();
System.out.println("Connection successful!");
} catch (Exception e) {
System.out.println("Connection failed: " + e.getMessage());
} finally {
// 记得关闭连接
if (jedis != null) {
jedis.close();
}
}
}
}
这个问题可能还有几个原因:
- Redis服务器没有在本地主机(localhost)上运行。你需要确保Redis服务器正在运行,并且正在监听预期的端口。你可以通过在终端运行
redis-cli ping
来检查Redis服务器是否正在运行。如果它返回 “PONG”,那么服务器正在运行。 - Redis服务器的URI格式错误。在你的代码中,你可能使用了错误的URI字符串来连接到Redis服务器。URI应该类似于 “redis://localhost:6379”,其中 “localhost:6379” 是Redis服务器运行的地址和端口。
- 防火墙问题。如果你的本地机器有防火墙,可能会阻止连接到Redis服务器。你需要检查防火墙设置,以确保端口6379(Redis默认端口)是开放
关于6379默认端口有个故事:
Redis 6379端口的故事起源于作者Antirez选择这个端口的原因。Antirez在开发Redis时,选择了6379作为默认端口,这个数字来自于意大利歌女Alessia Merz的名字。MERZ在Antirez眼中是一个愚蠢的代名词,他在早期看电视节目时,觉得Alessia Merz在节目中的一些话愚蠢可笑。因此,他把MERZ在手机键盘上对应的数字6379拿来用了。实际上,6379也是VMware的电话号码,队尾的数字79则代表着Antirez当时的公寓门牌号。