一、引言
说到数据库,就很难不讲连接池。比如什么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=20JedisUtil.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=20JedisUtil.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(); } }