错误如下:
连Java的报错:Exception in thread “main” redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to 47.106.x.x:6379
连springboot的报错:io.netty.channel.ConnectTimeoutException: connection timed out: /47.106.x.x:6379
原因就是没有开启redis的远程连接,感觉网上的步骤零零散散,我来总结一下我的过程:
redis的配置文件
①首先找到配置文件redis.conf,执行 vim redis.conf 就可以修改配置文件啦 !配置的点有两个,一个是注释,一个是由yes改no
#开启远程连接(注释掉代表允许所有人访问)
#bind 127.0.0.1 -::1
#开启远程连接(允许所有人访问,由yes修改为no)
protected-mode no
注释bind之外,还可以换成另一个做法:就是将127.0.0.1改为0.0.0.0即可,无需注释,也实现了所有机器上的地址都可以访问服务。
除此之外还可以多添加个密码,自己喜欢吧~修改好了保存退出后,记得要重新加载redis配置,比如我在bin目录的server要加载位于和bin一个目录的配置文件并启动,那么我执行的是:./redis-server ../redis-conf
防火墙
狠人直接:systemctl stop firewalld把防火墙推掉~
还可以就开启防火墙的6379端口,你可以先看看防火墙的状态:systemctl status firewalld,图中发现是active打开的状态~
可以按照以下的命令执行:
1、开启防火墙
systemctl start firewalld
2、开放指定端口(redis的默认port=6379)
firewall-cmd --zone=public --add-port=6379/tcp --permanent
命令含义:
--zone #作用域
--add-port=1935/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效(我一般不会写上永久生效的)
3、重启防火墙
firewall-cmd --reload
4、查看端口号
netstat -ntlp //查看当前所有tcp端口·
netstat -ntulp |grep 1935 //查看所有1935端口使用情况·
然后,阿里云的安全组也要配置一下,就可以连接上了。
//创建jedis客户端对象
Jedis jedis = new Jedis("47.106.x.x",6379);
jedis.auth("123456");
//选择使用一个库 默认使用0号库
jedis.select(0);
//获取redis中所有key的信息
Set<String> keys = jedis.keys("*");
keys.forEach(key -> System.out.println(key));
//释放资源
jedis.close();
//成功拿到所有的key:
name
map01
hate
zset01
city
list01
set01
参考:开启远程连接