麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 數(shù)據(jù)庫(kù) > Redis > 正文

動(dòng)態(tài)添加Redis密碼認(rèn)證的方法

2020-03-17 12:37:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

如果redis已在線上業(yè)務(wù)使用中,但沒(méi)有添加密碼認(rèn)證,那么如何在不影響業(yè)務(wù)服務(wù)的前提下給redis添加密碼認(rèn)證,就是一個(gè)需要仔細(xì)考慮的問(wèn)題。

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

1.定制jedis

對(duì)redis返回的錯(cuò)誤的處理,做兩處修改:

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

發(fā)生(error) NOAUTH Authentication required時(shí),將當(dāng)前connection置為broken,從而將連接踢出連接池。這樣動(dòng)態(tài)給redis添加上密碼時(shí),jedis會(huì)自動(dòng)重新創(chuàng)建可用連接。

我已經(jīng)對(duì)jedis 2.8.x版本做好了以上修改。可以直接下載使用 。如果使用了更高的版本jedis,可以參考我的代碼自行修改;如果使用了更低版本的,建議升級(jí)到2.8.x。

2.在項(xiàng)目代碼中使用定制的jedis

修改maven配置。將原來(lái)的jedis依賴注釋掉,添加對(duì)本地的定制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所在的相對(duì)路徑 --></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>-->

因?yàn)榘讯ㄖ苆edis通過(guò)本地jar包的形式提供,maven不會(huì)自動(dòng)加載jedis的依賴,所以需額外添加對(duì)commons-pool2的依賴。

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

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

替換前:

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

替換后:

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

4.將使用定制jedis的項(xiàng)目代碼上線

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

5.給redis server添加密碼認(rèn)證

動(dòng)態(tài)添加密碼會(huì)導(dǎo)致redis主從同步斷開(kāi),為避免引起全量同步對(duì)業(yè)務(wù)造成較大影響。需要dba先調(diào)大redis master的client-output-buffer-limit和repl-backlog-size參數(shù),再做配置密碼操作。

給redis server添加密碼的同時(shí),觀察業(yè)務(wù)代碼的log,添加完密碼后,log中會(huì)出現(xiàn)數(shù)次如下報(bào)錯(cuò),隨后恢復(fù)正常。報(bào)錯(cuò)次數(shù)是添加密碼時(shí),業(yè)務(wù)服務(wù)器的jedis連接池中與該redis server之間連接數(shù)量。

 

復(fù)制代碼 代碼如下:

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

 

如果使用了shardedJedis,請(qǐng)逐個(gè)分片進(jìn)行操作,最小化對(duì)業(yè)務(wù)服務(wù)的影響。

6.更換jedis為官方版本

定制jedis就是為了動(dòng)態(tài)添加密碼認(rèn)證。添加完畢后,換回官方j(luò)edis,方便今后升級(jí)。

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Redis頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: av免费av | 精品成人网| 欧美成人精品一区 | 九九热精品在线 | 欧美性色生活片免费播放 | 美国黄色毛片女人性生活片 | 一级黄色影院 | 久久精品男人 | 69性欧美高清影院 | 欧美日本日韩 | 欧美成人高清视频 | 免费欧美精品 | 亚洲成a人在线 | 久久视频精品 | 亚洲情在线 | 色人阁导航 | 欧美性生活网站 | 国产精品久久久久久久久久三级 | 成人福利视频在 | 久久久久久久久日本理论电影 | 欧美成人午夜一区二区三区 | 亚洲va久久久噜噜噜久久男同 | 极品大长腿啪啪高潮露脸 | 日本免费一区二区三区四区 | 成人啪啪18免费网站 | 一区二区三区日韩 | 国产又粗又爽又深的免费视频 | 国产精品自拍片 | 激情亚洲一区二区 | 俄罗斯16一20sex牲色另类 | hdbbwsexvideo| 欧美精品99 | 国产精品久久久久久久久久三级 | 男男啪羞羞视频网站 | 欧美a在线观看 | 精品亚洲福利一区二区 | 精品久久久久久中文字幕 | 91精彩在线 | 蜜桃av网 | 中文字幕在线视频网站 | av免费在线观看国产 |