婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 動態添加Redis密碼認證的方法

動態添加Redis密碼認證的方法

熱門標簽:太原營銷外呼系統 地圖標注費用 百度商家地圖標注怎么做 玄武湖地圖標注 地圖標注如何即時生效 西藏教育智能外呼系統價格 最簡單的百度地圖標注 竹間科技AI電銷機器人 小紅書怎么地圖標注店

如果redis已在線上業務使用中,但沒有添加密碼認證,那么如何在不影響業務服務的前提下給redis添加密碼認證,就是一個需要仔細考慮的問題。

本文描述一種可行的方案,適用于客戶端使用了jedis連接池,服務端使用了redis master-slave集群的情況。

1.定制jedis

對redis返回的錯誤的處理,做兩處修改:

忽略 (error) ERR Client sent AUTH, but no password is set。使配置了密碼的jedis可以在沒有配置密碼redis上使用;

發生(error) NOAUTH Authentication required時,將當前connection置為broken,從而將連接踢出連接池。這樣動態給redis添加上密碼時,jedis會自動重新創建可用連接。

我已經對jedis 2.8.x版本做好了以上修改??梢灾苯酉螺d使用 。如果使用了更高的版本jedis,可以參考我的代碼自行修改;如果使用了更低版本的,建議升級到2.8.x。

2.在項目代碼中使用定制的jedis

修改maven配置。將原來的jedis依賴注釋掉,添加對本地的定制jedis的依賴:

dependency>
  groupId>redis.clients/groupId>
  artifactId>jedis/artifactId>
  version>2.8.3/version>
  scope>system/scope>
  systemPath>${project.basedir}/../libs/jedis-2.8.3.jar/systemPath> !-- 此處的systemPath是jedis-2.8.3所在的相對路徑 -->
/dependency>
dependency>
  groupId>org.apache.commons/groupId>
  artifactId>commons-pool2/artifactId>
  version>2.4.2/version>
/dependency>
!--
dependency>
  groupId>redis.clients/groupId>
  artifactId>jedis/artifactId>
  version>2.8.1/version>
/dependency>
-->

因為把定制jedis通過本地jar包的形式提供,maven不會自動加載jedis的依賴,所以需額外添加對commons-pool2的依賴。

3.如果使用了低版本的jedis

老版本jedis的returnBrokenResource和returnResource這兩個方法在新版本jedis中已經廢棄,如果升級jedis版本的話,需要替換為close方法。

替換前:

try {  
 // ... 
} catch (JedisException e) {
 // ...  
 pool.returnBrokenResource(jedis);  
}  
finally {  
 pool.returnResource(jedis);  
}

替換后:

try {  
 // ... 
} catch (JedisException e) {  
 // ...  
}  
finally {  
 jedis.close();
}

4.將使用定制jedis的項目代碼上線

此時redis尚未添加密碼,但定制jedis忽略了“ERR Client sent AUTH, but no password is set”,所以線上運行正常。

5.給redis server添加密碼認證

動態添加密碼會導致redis主從同步斷開,為避免引起全量同步對業務造成較大影響。需要dba先調大redis master的client-output-buffer-limit和repl-backlog-size參數,再做配置密碼操作。

給redis server添加密碼的同時,觀察業務代碼的log,添加完密碼后,log中會出現數次如下報錯,隨后恢復正常。報錯次數是添加密碼時,業務服務器的jedis連接池中與該redis server之間連接數量。

復制代碼 代碼如下:

redis.clients.jedis.exceptions.JedisConnectionException: NOAUTH Authentication required.

如果使用了shardedJedis,請逐個分片進行操作,最小化對業務服務的影響。

6.更換jedis為官方版本

定制jedis就是為了動態添加密碼認證。添加完畢后,換回官方jedis,方便今后升級。

dependency>
  groupId>redis.clients/groupId>
  artifactId>jedis/artifactId>
  version>2.8.1/version>
/dependency>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 詳解Redis使用認證密碼登錄
  • 利用PHP訪問帶有密碼的Redis方法示例
  • Linux下Redis設置密碼及開機自啟動
  • redis配置認證密碼的方法
  • redis密碼設置、訪問權限控制等安全設置
  • Redis 密碼設置和查看密碼的方法

標簽:揚州 廣東 贛州 唐山 香港 景德鎮 澳門 林芝

巨人網絡通訊聲明:本文標題《動態添加Redis密碼認證的方法》,本文關鍵詞  動態,添加,Redis,密碼,認證,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《動態添加Redis密碼認證的方法》相關的同類信息!
  • 本頁收集關于動態添加Redis密碼認證的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 东宁县| 东乌珠穆沁旗| 双鸭山市| 溆浦县| 呼伦贝尔市| 蕉岭县| 墨江| 墨竹工卡县| 贺州市| 阜新| 台州市| 江华| 大同县| 松溪县| 邢台市| 瑞丽市| 临颍县| 锦州市| 梁山县| 林甸县| 南通市| 梧州市| 历史| 安阳县| 如东县| 庆城县| 屯昌县| 马边| 定西市| 内丘县| 湘阴县| 康马县| 当阳市| 通许县| 睢宁县| 双柏县| 嘉荫县| 江门市| 甘孜县| 开原市| 晴隆县|