问剑白玉京 2025-02-02 13:43 采纳率: 74.2%
浏览 14
已结题

Jedis无法连接Redis客户端

之前一切都可以使用,突然没办法连接客户端了。

Redis 7.4

首先排除云服务器安全组的问题:

img

其次排除了 配置文件中bind, protected mode, daemonize, requirepass 等参数

bind

img

protected mode

img

daemonize

img

requirepass

img

连接Redis代码:

public class RedisUtil {
    private static final String REDIS_HOST = "mine";
    private static final int REDIS_PORT = 6379;
    private static final String PASSWORD = "123456";

    private RedisUtil() {
    }

    private volatile static Jedis jedis;

    public static Jedis getJedis() {
        if (jedis == null) {
            synchronized (Jedis.class) {
                if (jedis == null) {
                    jedis = new Jedis(REDIS_HOST, REDIS_PORT);
                    jedis.auth(PASSWORD);
                    jedis.select(1);
                }
            }
        }
        return jedis;
    }
}

发现连接不上,使用客户端工具 telnet测试,连接不通

img

在服务器上使用 redis-cli 可以连接上

img

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2025-02-02 14:10
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    根据您提供的信息,可以确定云服务器的安全组配置无误,同时Redis的配置文件中也没有问题。您已经尝试了使用 telnet 进行连接测试,发现连接不通,但在服务器上使用 redis-cli 却可以连接上。这种情况可能是由于防火墙导致的,您需要检查服务器是否开启了防火墙,并且检查防火墙规则是否允许Redis端口的连接。 以下是一些可能导致连接问题的常见防火墙设置:
    1. 服务器防火墙未开启Redis端口: 您可以通过查看服务器防火墙的配置文件(如iptables规则)来确认Redis的端口是否被允许通过防火墙。如果没有对应的规则,则需要添加一个允许Redis端口通过的规则。
    2. 网络安全组限制: 在云服务器上,除了服务器本身的防火墙外,还可能存在云服务商提供的网络安全组配置。您需要检查网络安全组是否允许Redis端口的入站连接。 如果确认是防火墙导致的连接问题,您可以尝试关闭防火墙或者添加相应的规则。以下是一些示例代码:
    # 查看防火墙规则
    iptables -L
    # 如果发现没有相应的规则,可以添加一条允许Redis端口6379通过的规则
    iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
    # 关闭防火墙(仅供测试,生产环境中建议谨慎操作)
    service iptables stop
    

    通过以上步骤排查,可以帮助您解决连接不上Redis客户端的问题。如果问题仍然存在,您还可以进一步检查服务器日志,查看是否有其他异常信息。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月1日
  • 已采纳回答 3月24日
  • 修改了问题 2月2日
  • 创建了问题 2月2日