redis.clients.jedis.exceptions.InvalidURIException: Cannot open Redis connection due invalid URI

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();
        }
    }
}

}

这个问题可能还有几个原因:

  1. Redis服务器没有在本地主机(localhost)上运行。你需要确保Redis服务器正在运行,并且正在监听预期的端口。你可以通过在终端运行 redis-cli ping 来检查Redis服务器是否正在运行。如果它返回 “PONG”,那么服务器正在运行。
  2. Redis服务器的URI格式错误。在你的代码中,你可能使用了错误的URI字符串来连接到Redis服务器。URI应该类似于 “redis://localhost:6379”,其中 “localhost:6379” 是Redis服务器运行的地址和端口。
  3. 防火墙问题。如果你的本地机器有防火墙,可能会阻止连接到Redis服务器。你需要检查防火墙设置,以确保端口6379(Redis默认端口)是开放

关于6379默认端口有个故事:

​ Redis 6379端口的故事起源于作者Antirez选择这个端口的原因。Antirez在开发Redis时,选择了6379作为默认端口,这个数字来自于意大利歌女Alessia Merz的名字。MERZ在Antirez眼中是一个愚蠢的代名词,他在早期看电视节目时,觉得Alessia Merz在节目中的一些话愚蠢可笑。因此,他把MERZ在手机键盘上对应的数字6379拿来用了。实际上,6379也是VMware的电话号码,队尾的数字79则代表着Antirez当时的公寓门牌号。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值