一个Redis配置文件redis.conf上的小问题:JedisDataException
来源:互联网 发布:fedora17 yum无法使用 编辑:程序博客网 时间:2024/06/14 21:00
问题来源
昨天因为电脑上的VMware不小心升级版本后,虚拟机莫名其妙运行不起来了,折腾了一晚上没搞定,索性重装了VMware和ubuntu虚拟机,自然的,原来安装在虚拟机上的一切服务都没有了。
在安装完Redis后,发现之前本地windows主机连接虚拟机Redis的Jedis测试代码连不上了,于是乎开始解决问题,其实第一次安装的时候就遇到过,不过太久远忘记了,这次正好记录下来,省的下次还要百度解决。
先是Connection refused: connect
redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect at redis.clients.jedis.Connection.connect(Connection.java:134) at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:69) at redis.clients.jedis.Connection.sendCommand(Connection.java:79) at redis.clients.jedis.Connection.sendCommand(Connection.java:75) at redis.clients.jedis.BinaryClient.auth(BinaryClient.java:499) at redis.clients.jedis.Jedis.auth(Jedis.java:1963) at com.lhx.redis.JedisTest.setup(JedisTest.java:23) 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:606) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) 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)Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:579) at redis.clients.jedis.Connection.connect(Connection.java:129) ... 34 more
这个问题算是迅速反应过来了,第一反应就是查看redis默认监听的6379端口下的进程。
netstat -anp|grep 6379
lhx@ubuntu:/usr/local/redis/bin$ netstat -anp|grep 6379(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 792/redis-server *:tcp 0 0 127.0.0.1:52752 127.0.0.1:6379 TIME_WAIT - tcp6 0 0 :::6379 :::* LISTEN 792/redis-server *:
可以看到只有127.0.0.1,说明配置文件redis.conf默认绑定了本地ip,该配置会导致,其他ip登录被拒绝,比如我的ubuntu虚拟机的ip地址192.168.241.128。
所以我们把绑定ip的语句注释掉,打开redis文件夹下的redis.conf,注释掉下图中红框代码即可。
修改完redis.conf,重启redis服务,再次运行Jedis连接的测试代码,遇到了第二个问题。
JedisDataException
Junit的报错信息发生了变化,如下图所示:
连接失败的错误是解决了,这个问题又是指什么呢?
看报错信息,我们不难发现,这个错误大概是说Redis目前在保护模式下运行,不允许非本地客户端链接,我们可以通过给Redis设置访问密码来让非本地客户端去访问它,然后客户端链接的时候,设置Jedis密码Auth就可以解决了。
设置服务端访问密码
127.0.0.1:6379> config set requirepass lhxaiee123OK127.0.0.1:6379> auth lhxaiee123OK127.0.0.1:6379>
Jedis通过密码访问
@Beforepublic void setup() { //连接redis服务器,192.168.0.100:6379 jedis = new Jedis("192.168.241.128", 6379); //权限认证 jedis.auth("lhxaiee123"); }
记得以后每次通过SecureCRT连接Redis时要先输入访问密码咯。
127.0.0.1:6379> auth lhxaiee123
至此,windows本机代码对ubuntu虚拟机Redis的访问恢复如初。
- 一个Redis配置文件redis.conf上的小问题:JedisDataException
- 【Redis】redis的redis.conf配置文件
- redis配置文件redis.conf
- Redis配置文件redis.conf
- redis配置文件redis.conf
- Redis 配置文件 redis.conf
- redis配置文件redis-conf
- redis配置文件redis.conf
- redis配置文件 redis.conf
- [Redis]配置文件redis.conf
- redis配置文件redis.conf的详细说明
- redis配置文件redis.conf的详细说明
- redis配置文件redis.conf的详细说明
- redis配置文件redis.conf的详细说明
- redis配置文件redis.conf的详细说明
- redis的配置文件redis.conf常见配置
- redis配置文件redis.conf的详细说明
- redis配置文件redis.conf的详细说明
- html之链接
- 比较protoStuff和fastjson以及实现Serializable接口序列化的效率问题
- ffmpeg读取视频帧并显示相关信息
- Java中对象和引用的理解
- php socket通信中stream_select方法的理解
- 一个Redis配置文件redis.conf上的小问题:JedisDataException
- 处理浏览器兼容所遇到的问题总结(二)
- MYSQL查各张表的行数
- python数据可视化利器--pyecharts
- 在网页端进行添加和删除记录的操作。
- set -x 作用
- 校招准备系列:每天一道算法题(5)-两数之和
- 利用pdfbox和itext包将pdf转换为图片
- SparkSQL---DataFrame