这篇文章给大家分享的是有关在redis中设置客户端登录密码的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

导语:

为了保证安全性,redis在生产环境中一般都会设置登录密码,今天我就来为大家介绍一下如何设置登录密码。

修改redis.conf

RT,打开redis.conf文件,搜索requirepass关键字,如下图:

关注标记的那一行,#requirepass foobared。设置密码的方法就是去掉注释的#,把foobared替换成自己的密码即可,例如将密码设置为123456:

修改完成后重启redis,再次通过redis客户端redis-cli登录并操作可以发现会报一个身份认证错误:

这就说明我们已经成功的设置了密码,所以通过客户端连接的话必须加上密码参数才能正常连接:

如上图所示,加了-a参数之后即可正常连接并操作redis。

jedis设置密码

当我们用Java客户端连接redis时会遇到同样的问题,下面看一段简单的jedis连接redis的测试代码:

packagecom.firstelite.test;importorg.junit.Test;importredis.clients.jedis.Jedis;publicclassTest4Jedis{@TestpublicvoidtestTwo(){Jedisjedis=newJedis("192.168.145.10");System.out.println("Connectiontoserversucessfully");//查看服务是否运行System.out.println("Serverisrunning:"+jedis.ping());}}

非常简单,仅仅是测试一下Jedis是否连通redis服务器,运行junit后我们发现报异常了:

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

显而易见,由于我们设置了密码但在这里又没有指定密码,所以报了和刚才相同的错误,那么如何指定密码呢?很简单,Jedis的父类BinaryJedis提供了这样一样方法:

publicStringauth(finalStringpassword){checkIsInMulti();client.auth(password);returnclient.getStatusCodeReply();}

所以在创建了Jedis的实例后再加上一行jedis.auth("123456"); 即可,最后看一下运行结果:

spring-data-redis设置密码

通常情况下在实际的java项目中我们会选择Spring提供的spring-data-redis来操作redis,spring的封装可以给我们提供很多便捷之处。那么spring-data-redis又是如何设置密码的呢?首先定义一个redis.properties配置文件,定义一组redis属性供spring加载使用,其中就包含密码(redis.password):

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

然后在由Spring封装的JedisConnectionFactory中来设置密码属性即可,下面是完整redis配置:

<!--redis配置--><beanid="poolConfig"class="redis.clients.jedis.JedisPoolConfig"><propertyname="maxIdle"value="${redis.maxIdle}"/><propertyname="maxWaitMillis"value="${redis.maxWaitMillis}"/><propertyname="testOnBorrow"value="${redis.testOnBorrow}"/></bean><beanid="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"/><beanid="redisTemplate"class="org.springframework.data.redis.core.StringRedisTemplate"><propertyname="connectionFactory"ref="connectionFactory"/></bean>

感谢各位的阅读!关于“在redis中设置客户端登录密码的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!