jedis 的使用

redis 的基本知识学了后,我们就要用java连接了。首先redis 在远程的服务器上,我们的项目在windows上。
首次连接redis 时报错:

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: 
java.net.SocketException: Software caused connection abort: recv failedat 
redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:202)
at redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:40)
at redis.clients.jedis.Protocol.process(Protocol.java:151)
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.hy.redis_maven.App.main(App.java:17)
Caused by: java.net.SocketException: Software caused connection abort: recv failedat 
java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:196)... 7 more

出现这个问题的原因是redis.conf文件中bind 127.0.0.1,这导致redis只映射本机
解决办法,打开redis6379.conf 将bind 127.0.0.1注释就行.
修改以后要重启服务。
注意,首先要在服务器上开启端口6379

public class test {

	public static void main(String[] args) {
		Jedis jedis = new Jedis("xx.xxx.xxx.xxx", 6379); //此处为你的ip地址
		System.out.println(jedis.ping());
		jedis.set("username", "liyicheng");
		System.out.println(jedis.get("username"));
	}

}

JedisPool 的使用


public class JedisPoolUtil {

	private static volatile JedisPool jedisPool = null;
	
	private  JedisPoolUtil(){}

	public static JedisPool getJedisPoolInstance(){		
		if(jedisPool == null){
			synchronized (JedisPool.class) {
				if(jedisPool == null){
					JedisPoolConfig jsConfig = new JedisPoolConfig();
					jsConfig.setMaxWait(100*1000);
					jsConfig.setMaxActive(1000);
					jsConfig.setMaxIdle(32);
					jsConfig.setTestOnReturn(true);
	
					jedisPool = new JedisPool(jsConfig,"你的ip地址", 6379);
				}
			}			
		}
		return jedisPool;
	}
	//释放对象
	public static void release(JedisPool jedisPool,Jedis jedis){
		if(jedis != null){
			jedisPool.returnResourceObject(jedis);
		}
	}
	
	
}

测试类测试一下

public class testPool {

	public static void main(String[] args) {
		Jedis jedis = null;
		JedisPool jedisPool = JedisPoolUtil.getJedisPoolInstance();
		try {
			jedis = jedisPool.getResource();
			jedis.set("pool", "newpool");
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			JedisPoolUtil.release(jedisPool, jedis);
		}		
	
	}
}

在jedis 命令行里可以查看到结果。

猜你喜欢

转载自blog.csdn.net/weixin_38008100/article/details/82908458