1. 程式人生 > >Cannot get Jedis connection,Could not get a resource from the pool,DENIED Redis is running in protec

Cannot get Jedis connection,Could not get a resource from the pool,DENIED Redis is running in protec

一個新專案使用redis做純快取,在本機中無障礙使用,redis放到伺服器就出現上面的錯誤。

折騰了小一天排查各種可能性終於解決問題。最後不使用任何框架直接使用jedis 才發現問題的根本是redis開啟了保護模式。

解決如下:連線redis客戶端,使用命令

  1. 127.0.0.1:6379> config set protected-mode "no"  

搞定。

根據一天的收攏連線不上redis存在的其他可能性。

1、redis沒有啟動(好囧,真的出現過這種情況)。

2、ip 或 host 不正確。

3、埠沒有開放。在redis官群裡有問同學說他有一次出現這個問題是因為16379埠沒有開放。

4、註釋掉reids.conf 的bind  。

=====================前方高能=====================

在新裝的redis中,預設開啟redis保護模式,只能本地訪問。

解決辦法在protected-mode配置專案上說的很明白了,

或、繫結ip地址bind ip

或、新增連線密碼項requirepass password

或、關閉保護模式protected-mode no

值得說的是我就這麼搞了也不好使,後來通過config get * 命令發現redis預設讀取的配置檔案竟然不是我修改的redis.conf(原因待查)。啟動時指定配置檔案後成功。

最終我的配置是,bind 本機固定ip, protected-mode yes,requirepass password。

最後web端成功連線,redis客戶端連線方式 /redis-cli -h ip -p host -a password。