Redis 設置密碼登錄


前言

redis在生產環境中通常都會設置密碼以保證一定的安全性,本篇文章就簡單記錄一下如何在redis中設置客戶端登錄密碼。

修改redis.conf

RT,打開redis.conf文件,搜索requirepass關鍵字,如下圖: 
這里寫圖片描述

關注標記的那一行,#requirepass foobared。設置密碼的方法就是去掉注釋的#,把foobared替換成自己的密碼即可,例如將密碼設置為123456: 
這里寫圖片描述

修改完成后重啟redis,再次通過redis客戶端redis-cli登錄並操作可以發現會報一個身份認證錯誤: 
這里寫圖片描述

這就說明我們已經成功的設置了密碼,所以通過客戶端連接的話必須加上密碼參數才能正常連接: 
這里寫圖片描述

如上圖所示,加了-a參數之后即可正常連接並操作redis。

jedis設置密碼

當我們用Java客戶端連接redis時會遇到同樣的問題,下面看一段簡單的jedis連接redis的測試代碼:

package com.firstelite.test; import org.junit.Test; import redis.clients.jedis.Jedis; public class Test4Jedis { @Test public void testTwo() { Jedis jedis = new Jedis("192.168.145.10"); System.out.println("Connection to server sucessfully"); // 查看服務是否運行 System.out.println("Server is running: " + jedis.ping()); } } 

非常簡單,僅僅是測試一下Jedis是否連通redis服務器,運行junit后我們發現報異常了:

redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required. at redis.clients.jedis.Protocol.processError(Protocol.java:117) at redis.clients.jedis.Protocol.process(Protocol.java:142) at redis.clients.jedis.Protocol.read(Protocol.java:196) at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:288) at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:187) at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:109) at com.firstelite.test.Test4Jedis.testTwo(Test4Jedis.java:15) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

顯而易見,由於我們設置了密碼但在這里又沒有指定密碼,所以報了和剛才相同的錯誤,那么如何指定密碼呢?很簡單,Jedis的父類BinaryJedis提供了這樣一樣方法:

  public String auth(final String password) { checkIsInMulti(); client.auth(password); return client.getStatusCodeReply(); }

所以在創建了Jedis的實例后再加上一行jedis.auth("123456"); 即可,最后看一下運行結果: 
這里寫圖片描述

spring-data-redis設置密碼

通常情況下在實際的java項目中我們會選擇Spring提供的spring-data-redis來操作redis,spring的封裝可以給我們提供很多便捷之處。那么spring-data-redis又是如何設置密碼的呢?首先定義一個redis.properties配置文件,定義一組redis屬性供spring加載使用,其中就包含密碼(redis.password):

# Redis settings redis.host=192.168.145.10 redis.port=6379 redis.password=123456 redis.timeout=100000 redis.maxTotal=300 redis.maxIdle=100 redis.maxWaitMillis=1000 redis.testOnBorrow=true 

然后在由Spring封裝的JedisConnectionFactory中來設置密碼屬性即可,下面是完整redis配置:

<!-- redis配置 --> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}" /> <property name="maxWaitMillis" value="${redis.maxWaitMillis}" /> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> </bean> <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.password}" p:pool-config-ref="poolConfig" /> <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"> <property name="connectionFactory" ref="connectionFactory" /> </bean>

總結

簡單整理一下關於Redis設置密碼相關的內容,希望對遇到同樣問題的朋友有所幫助,The End。

下面關於Redis的文章您也可能喜歡,不妨參考下:

Ubuntu 14.04下Redis安裝及簡單測試 http://www.linuxidc.com/Linux/2014-05/101544.htm

Redis主從復制基本配置 http://www.linuxidc.com/Linux/2015-03/115610.htm

Redis集群明細文檔 http://www.linuxidc.com/Linux/2013-09/90118.htm

Ubuntu 12.10下安裝Redis(圖文詳解)+ Jedis連接Redis http://www.linuxidc.com/Linux/2013-06/85816.htm

Redis系列-安裝部署維護篇 http://www.linuxidc.com/Linux/2012-12/75627.htm

CentOS 6.3安裝Redis http://www.linuxidc.com/Linux/2012-12/75314.htm

Redis安裝部署學習筆記 http://www.linuxidc.com/Linux/2014-07/104306.htm

Redis配置文件redis.conf 詳解 http://www.linuxidc.com/Linux/2013-11/92524.htm

Redis 的詳細介紹請點這里 
Redis 的下載地址請點這里

http://www.linuxidc.com/Linux/2016-09/135557.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM