qq_49214533 2023-11-30 22:27 采纳率: 0%
浏览 10

连接不到虚拟机内的redis

连接不上虚拟机内的redis
宿主机IP、PORT : 192.168.1.203:1234 使用NAT模式,映射到虚拟机IP、PORT : 192.168.235.128:22。在虚拟机上启动了redis,端口为6379,密码为123456,防火墙已关闭,bind设置为0.0.0.0,在虚拟机内能正常进入redis执行命令等操作。
在同一个局域网内的另一台机器上使用jedis连接redis

import redis.clients.jedis.Jedis;

public class JedisDemo {
    public static void main(String[] args){
        String ip = "192.168.1.203";
        int port = 1234;
        Jedis jedis = new Jedis(ip, port);
        jedis.auth("12345");
        System.out.println(jedis.ping());
    }
}

执行报错,在 jedis.auth("12345"); 这一步报错了,密码也没问题,ping宿主机也可以ping通,telent 192.168.1.203 1234 也可以进入命令行,但是就连接不上redis,网上找的各种方法都试过了,还是不行,有人帮忙看下吗

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: S
    at redis.clients.jedis.Protocol.process(Protocol.java:172)
    at redis.clients.jedis.Protocol.read(Protocol.java:223)
    at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:352)
    at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:270)
    at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:141)
    at redis.clients.jedis.Connection.sendCommand(Connection.java:163)
    at redis.clients.jedis.Connection.sendCommand(Connection.java:154)
    at redis.clients.jedis.BinaryClient.auth(BinaryClient.java:810)
    at redis.clients.jedis.BinaryJedis.auth(BinaryJedis.java:2716)
    at com.lance.middleware.redis.jedis.JedisDemo.main(JedisDemo.java:15)

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-01 10:39
    关注

    【以下回答由 GPT 生成】

    **答案**:
    这个问题可能是由于虚拟机网络配置的原因导致的连接问题。在虚拟机内部是可以正常连接到Redis的,但是在同一个局域网内的另一台机器上使用jedis连接redis时出现了问题。
    
    首先,确保虚拟机的网络配置正确。确认虚拟机的网络模式是NAT模式,并且在宿主机上进行端口映射。确保宿主机的IP地址和端口号正确映射到了虚拟机的IP地址和端口号上。
    
    其次,检查防火墙的设置。确保防火墙没有阻止局域网内的其他机器连接到虚拟机的Redis服务。可以暂时关闭防火墙进行测试。
    
    然后,检查Redis的配置文件。确认Redis的bind设置为0.0.0.0,允许来自局域网内的其他机器连接。
    
    最后,查看Java代码连接Redis的部分。确保代码中的IP地址和端口号设置正确,密码也正确。在连接之前,可以通过ping命令测试一下是否可以正确连接到Redis服务。
    
    如果以上步骤都确认无误,仍然无法连接到Redis,那么可能是网络配置、防火墙或者虚拟机软件本身的问题。可以尝试使用其他机器进行连接,或者在同一个机器上开启一个本地的Redis服务进行测试,以确认是不是虚拟机内部的问题。
    

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月30日