天天看點

無法使用jedis連接配接遠端伺服器上的redis解決方案ENIED Redis is running in protected mode because prot...

在使用jedis的過程中,由于我不是使用本地的redis作為連接配接庫,我是使用本人遠端的伺服器上的redis作為存儲庫,在使用的過程中遇到了一些小問題。比如說連接配接不上遠端的伺服器上的redis

解決辦法:

* 1:在本機上使用telnet指令看看是否是遠端伺服器的防火牆禁止6379端口被通路

如果是被防火牆給禁止了,需要去配置防火牆配置檔案,将這兩個端口打開

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

如下所示:

target     prot opt source               destination         
ACCEPT     tcp  --  /            /           tcp dpt: 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  /            /           tcp spt: 
           
  • 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) ;  
   }  
}
           

上述代碼片段運作成功,說明你的配置成功了

繼續閱讀