问题
阿里云安装并启用Redis后,尝试在本地用Jedis调用,发现报错
public class Jedis01 {
@Test
public void connect(){
Jedis jedis = new Jedis("101.37.31.211", 6379); // 公网ip
jedis.auth("123"); // 密码
String ping = jedis.ping();
System.out.println(ping);
jedis.close();
}
}
报错内容:
redis.clients.jedis.exceptions.JedisConnectionException: Failed to connect to any host resolved for DNS name.
解决方案
- 阿里云管理后台查看公网ip
- 本机尝试ping公网ip,发现可以ping通,接着,搜了一些博客,总结以下一些需要配置的地方。
- 配置 redis.conf 文件
# protected-mode yes 将其关闭:
protected-mode no
注释掉以下内容,开放ip可以让其他主机也可以连接
# bind 127.0.0.1 -::1
# bind 0.0.0.0
- 重启 redis
/etc/init.d/redis-server restart
依旧会报错,可以发现能ping通,但是无法访问6379端口
5. 继续配置,更新防火墙规则,我是ubuntu,如果是centos可能命令不同
# 启用 ufw 防火墙
ufw enablie
# 重新加载防火墙
ufw reload
# 允许外部访问 6379 端口
ufw allow 6379/tcp
# 重新加载防火墙
ufw reload
# 查看 ufw 状态和规则
ufw status
我们可以看到已经开放 6379 端口了:
Status: active
To Action From
-- ------ ----
6379/tcp ALLOW Anywhere
6379/tcp (v6) ALLOW Anywhere (v6)
重启redis后,继续测试,发现依旧报错,OK,继续找原因…
6. 在服务器控制台,配置安全组,入方向加上 6379 端口,授权对象是 0.0.0.0/0
继续测,依旧失败,崩溃了…有没有大佬可以帮忙解决看看哪里没有设置好
曲线救国:
windows系统安装redis,凑活使用,借鉴的博客是Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)_redis安装-CSDN博客
- Releases · tporadowski/redis 下载Redis.zip文件
- 解压后,将文件目录配置到系统环境变量中
- 命令行页面中,
redis-server
启动redis - 测试一下
@Test
public void connect(){
Jedis jedis = new Jedis("127.0.0.1", 6379);
// jedis.auth("123");
String ping = jedis.ping();
System.out.println(ping);
jedis.close();
}
输出
PONG
Process finished with exit code 0
终于成功了