一、引言
说到数据库,就很难不讲连接池。比如什么C3P0连接池啦,Druid连接池啦,等等。
我们在Java中通过Jedis操作Redis时,其实也能使用连接池,它就是JedisPool。
二、设置连接池的两种方式
方式一:直接在Java代码中指定连接池的相关信息;
方式二:先编写properties文件,再在Java代码中加载该文件,最后对连接池进行设置。
方式一:直接在Java代码中指定连接池的相关信息
@org.junit.Test
public void test1() {
JedisPool jedisPool = new JedisPool();
Jedis jedis = jedisPool.getResource();
jedis.set("name", "Tom");
System.out.println(jedis.get("name"));
jedis.close();
}
@org.junit.Test
public void test2() {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(20);
//JedisPool jedisPool = new JedisPool("localhost", 6379);
//JedisPool jedisPool = new JedisPool(config, "localhost");
JedisPool jedisPool = new JedisPool(config, "localhost", 6379);
Jedis jedis = jedisPool.getResource();
jedis.set("name", "Mary");
System.out.println(jedis.get("name"));
jedis.close();
}
方式二 :先编写properties文件,再在Java代码中加载该文件,最后对连接池进行设置。
redis.properties:
redis.host=127.0.0.1
redis.port=6379
redis.maxTotal=20
JedisUtil.java:
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class JedisUtil {
private static JedisPool jedisPool;
static {
InputStream inputStream = JedisUtil.class.getClassLoader().getResourceAsStream("redis.properties");
Properties properties = new Properties();
try {
properties.load(inputStream);
String host = properties.getProperty("redis.host");
Integer port = Integer.valueOf(properties.getProperty("redis.port"));
Integer maxTotal = Integer.valueOf(properties.getProperty("redis.maxTotal"));
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(maxTotal);
jedisPool = new JedisPool(config, host, port);
} catch (IOException e) {
e.printStackTrace();
}
}
public static Jedis getJedis() {
return jedisPool.getResource();
}
}
测试代码:
public void test3() {
Jedis jedis = JedisUtil.getJedis();
jedis.set("OK?", "Yes!");
System.out.println(jedis.get("OK?"));
jedis.close();
}
最后附上源码:
项目结构:
redis.properties:
redis.host=127.0.0.1
redis.port=6379
redis.maxTotal=20
JedisUtil.java:
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class JedisUtil {
private static JedisPool jedisPool;
static {
InputStream inputStream = JedisUtil.class.getClassLoader().getResourceAsStream("redis.properties");
Properties properties = new Properties();
try {
properties.load(inputStream);
String host = properties.getProperty("redis.host");
Integer port = Integer.valueOf(properties.getProperty("redis.port"));
Integer maxTotal = Integer.valueOf(properties.getProperty("redis.maxTotal"));
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(maxTotal);
jedisPool = new JedisPool(config, host, port);
} catch (IOException e) {
e.printStackTrace();
}
}
public static Jedis getJedis() {
return jedisPool.getResource();
}
}
Test.java:
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class Test {
@org.junit.Test
public void test1() {
JedisPool jedisPool = new JedisPool();
Jedis jedis = jedisPool.getResource();
jedis.set("name", "Tom");
System.out.println(jedis.get("name"));
jedis.close();
}
@org.junit.Test
public void test2() {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(20);
//JedisPool jedisPool = new JedisPool("localhost", 6379);
//JedisPool jedisPool = new JedisPool(config, "localhost");
JedisPool jedisPool = new JedisPool(config, "localhost", 6379);
Jedis jedis = jedisPool.getResource();
jedis.set("name", "Mary");
System.out.println(jedis.get("name"));
jedis.close();
}
@org.junit.Test
public void test3() {
Jedis jedis = JedisUtil.getJedis();
jedis.set("OK?", "Yes!");
System.out.println(jedis.get("OK?"));
jedis.close();
}
}