redis学习笔记(二)
来源:互联网 发布:磁力在线播放 源码 编辑:程序博客网 时间:2024/06/05 16:46
引入依赖
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 --><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.4.2</version></dependency>
编写测试代码
方式一:
package com.jedis;import org.junit.Test;import redis.clients.jedis.Jedis;/** * @author wyc * @ClassName Test1 * @Description TODO * @date 2017年9月26日 下午7:59:15 * */public class Test1 { @Test public void testJedis(){ //连接数据库 Jedis jedis = new Jedis("192.168.117.128", 6379); //设置数据 jedis.set("name", "test"); //获取数据 String value = jedis.get("name"); System.out.println(value); //关闭连接 jedis.close(); }}
此时运行代码会报以下错误:
redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect timed out at redis.clients.jedis.Connection.connect(Connection.java:207) at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93) at redis.clients.jedis.Connection.sendCommand(Connection.java:126) at redis.clients.jedis.BinaryClient.set(BinaryClient.java:110) at redis.clients.jedis.Client.set(Client.java:47) at redis.clients.jedis.Jedis.set(Jedis.java:120) at com.jedis.Test1.testJedis(Test1.java:21) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) 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.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) 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.junit.runners.ParentRunner.run(ParentRunner.java:309) 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:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)Caused by: java.net.SocketTimeoutException: connect timed out at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at redis.clients.jedis.Connection.connect(Connection.java:184) ... 29 more
原因:linux未将6379端口对外暴露
方法:改变防火墙设置
vim /etc/sysconfig/iptables
复制红框中的配置并将端口号改为6379,保存,输入以下命令重启防火墙
service iptables restart
之后若依旧出现无法连接的情况,修改redis.conf,将bindAddress 127.0.0.1注释掉
第二个问题:
redis.clients.jedis.exceptions.JedisDataException: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside. at redis.clients.jedis.Protocol.processError(Protocol.java:127) at redis.clients.jedis.Protocol.process(Protocol.java:161) at redis.clients.jedis.Protocol.read(Protocol.java:215) at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340) at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:239) at redis.clients.jedis.Jedis.set(Jedis.java:121) at com.jedis.Test1.testJedis(Test1.java:21) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) 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.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) 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.junit.runners.ParentRunner.run(ParentRunner.java:309) 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:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
解决方法:
protected-mode yea>protected-mode no
方式二(使用连接池):
@Test public void testJedis1(){ //创建配置 JedisPoolConfig config = new JedisPoolConfig(); //设置最大连接数 config.setMaxTotal(30); //设置闲余连接数 config.setMaxIdle(10); JedisPool pool = new JedisPool(config, "192.168.117.128", 6379); Jedis jedis = null; try{ jedis = pool.getResource(); jedis.set("name", "test1"); String value = jedis.get("name"); System.out.println(value); }catch(Exception e){ e.printStackTrace(); }finally{ if(jedis != null){ jedis.close(); } if(pool != null){ pool.close(); } } }
阅读全文
0 0
- redis学习笔记(二)
- Redis学习笔记(二)
- Redis学习笔记(二)
- Redis 学习笔记(二)
- redis学习笔记(二)
- redis学习笔记(二)
- Redis学习笔记(二)
- redis学习笔记(二)
- redis学习笔记(二)
- Redis 学习笔记二
- Redis学习笔记(二)--数据类型
- redis学习笔记二(常规操作)
- Redis学习笔记(二)——Redis的准备
- Redis学习笔记(二)Redis持久化
- redis学习笔记二(redis的数据类型)
- java连接redis数据库-redis学习笔记(二)
- redis学习笔记(二)JedisCluster + redis 3.2.5集群
- Redis学习笔记(二) Redis持久化
- [Docker] ERROR: Failed to creating docker image:Permission denied
- 工具类-dp转化
- C51串口
- mobiscroll 时间选择器小结
- JAVA框架原理
- redis学习笔记(二)
- 1020. 月饼 (25)
- python中tuple(元组)使用总结
- (欧) 第5章 程序设计基本概念
- python笔记
- h5的全局属性-对任何元素都可使用的属性
- 移动端拨打电话功能
- text段,data段,bss段,堆和栈
- ASR1:MFCC特征提取