无法使用jedis连接远程服务器上的redis解决方案ENIED Redis is running in protected mode because prot

在使用jedis的过程中,由于我不是使用本地的redis作为连接库,我是使用本人远程的服务器上的redis作为存储库,在使用的过程中遇到了一些小问题。比如说连接不上远程的服务器上的redis

解决办法:
* 1:在本机上使用telnet命令看看是否是远程服务器的防火墙禁止6379端口被访问

telnet IP port

如果是被防火墙给禁止了,需要去配置防火墙配置文件,将这两个端口打开

iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 6379 -j ACCEPT
  • 2然后再看下是否是添加上去了
iptables -L -n

如下所示:

target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:6379 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:6379 
  • 3最后别忘记了保存 对防火墙的设置

    通过命令:service iptables save 进行保存

  • 4重启iptables

    service iptables restart

  • 5然后打开你的redis的redis.conf文件,把bind 127.0.0.1这行代码注释了

但是这时候还是不行的,因为redis默认的配置文件配置redis目前处于受保护的模式,我们只需要给他设置密码就行了

打开服务器的redis-cli客户端
输入set requirepass yourpwd

再输入quit

再次打开redis-cli客户端

试着ping一下你的redis这时候你发现已经ping不通了,因为我们给他设置了密码,

输入auth yourpwd

ok搞定

public class RedisConnect {
    static String constr = "your ip" ;  
    public static Jedis getRedis(){  
         Jedis jedis = new Jedis(constr) ; 
         jedis.auth("yourpwd");
       return jedis ;  
   }  
    public static void main(String[] args){  
         Jedis j = RedisConnect. getRedis() ;  
         String output ;  
         j.set( "hello", "world" ) ;  
         output = j.get( "hello") ;  
         System. out.println(output) ;  
   }  
}

上述代码片段运行成功,说明你的配置成功了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值