问题——本地连接无法连接腾讯云上的redis——已解决

本文介绍了在使用Jedis操作腾讯云服务器上的Redis时遇到的连接失败问题及其解决步骤,包括检查host与port、修改redis.conf配置文件、在腾讯云安全组中添加规则等。

参考连接:https://www.cnblogs.com/l48x4264l46/p/11055692.html

一、问题

今天学习redis时,在IDEA上尝试使用Jedis来操作命令,结果出现连接失败。

代码如下:

public class TestPing {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("xxx.xx.xx.xx",6379);
        jedis.auth("xxxx");					// redis密码
        System.out.println(jedis.ping());	// 结果输出应该为:PONG
    }
}

错误如下:
在这里插入图片描述

二、解决方案

1、host与port

出现过一次问题:host错误的输入成 ifconfig 获取的地址了。
host:腾讯云服务器上的公网地址
port:redis的端口号

2、redis.conf配置文件

# 注释掉即可.这是本机连接,只能使用Linux本机进行连接和赋值取值。
# bind 127.0.0.1

# 将保护模式关闭,默认是yes
protected-mode no

# 为了安全着想,可以设置密码
requirepass xxxx

3、腾讯云安全组添加规则

前面设置完后,以为可以连接,结果还是无法连接。在腾讯云安全组中添加规则。也就是需要放行 redis的端口号。
在这里插入图片描述

4、成功出结果

在这里插入图片描述

### 腾讯云轻量应用服务器 6379 端口连接失败解决方案 当遇到腾讯云轻量应用服务器上 Redis 默认端口 6379 无法连接的情况时,可能涉及多个方面的原因分析和排查。以下是详细的解决方法: #### 1. 安全组配置检查 安全组设置是导致端口不可访问的主要原因之一。如果未开放 6379 端口或者规则配置错误,则外部请求会被拦截。需要登录到腾讯云控制台的安全组管理页面,确认是否有允许 TCP 协议下 6379 端口的入站流量规则[^1]。 - 如果不存在对应规则,需新增一条规则来放通该端口。 ```bash Protocol: TCP Port Range: 6379 Source IP/CIDR Block: 0.0.0.0/0 (可根据实际需求调整为更具体的IP范围) Action: Allow ``` #### 2. 防火墙本地策略验证 除了云端的安全组外,操作系统自身的防火墙也可能阻止了对 6379 的访问尝试。可以通过命令查看当前 Linux 主机上的防火墙状态以及已启用的服务列表[^2]。 对于基于 `iptables` 或者现代版本中的 `firewalld` 工具来说,执行如下操作可以临时关闭它们以便测试连通性问题是否存在于此层面上: ```bash # 关闭 firewalld sudo systemctl stop firewalld # 查看 iptables 规则集 sudo iptables -L --line-numbers ``` 另外一种情况就是即使开启了必要的服务却仍然不能正常工作——这通常是因为监听地址被绑定到了回环接口(`localhost`)而非公网网卡之上所致;因此还需要进一步核查 redis.conf 文件内的 bind 参数设定是否恰当[^3]。 #### 3. Redis Server 启动参数审查 默认情况下Redis只接受来自本机内部循环网络接口(即 localhost )发起的数据交换请求, 若要让远程客户端能够成功建立链接关系就必须修改其启动脚本或者是通过编辑 configuration file 来实现全局性的更改: 打开 `/etc/redis/redis.conf`, 找到并取消注释下面这一行内容之后保存退出即可生效: ```conf bind 0.0.0.0 # 将原来的 '127.0.0.1' 替换为此值表示接受任何来源ip的连接请求. protected-mode no # 取消保护模式以支持非本地连接。(注意生产环境不建议如此配置!) ``` 随后重启服务使改动立即起作用:`service redis-server restart`. 以上步骤完成后再次试用 telnet 命令或者其他专业工具去探测目标机器上的指定端口号是否处于活跃等待接收数据包的状态. #### 4. 测试连接状况 最后一步便是利用简单的 shell script 实现自动化检测整个流程的效果如何: ```bash #!/bin/bash HOST="your_server_ip" PORT=6379 TIMEOUT=5 if echo "" | timeout $TIMEOUT nc -zvw$TIMEOUT ${HOST} ${PORT}; then printf "\nConnection to %s on port %d succeeded!\n\n" "${HOST}" "${PORT}" else printf "\nConnection to %s on port %d failed.\n\n" "${HOST}" "${PORT}" fi ``` 运行上述脚本文件前记得赋予可执行权限给它 (`chmod +x check_port.sh`) 并替换掉变量 HOST 中的具体数值部分为你自己的实例公网 ip 地址信息. 完成这些措施后应该能有效缓解乃至彻底消除由于各种原因造成的针对特定端口资源获取不到的现象发生几率大大降低下来.
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DontKai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值