#Jedis连接池JedisPool #编写JedisPool工具类(加载配置) @FDDLC

it2024-07-02  42

一、引言

说到数据库,就很难不讲连接池。比如什么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(); } }

 

 

 

 

 

最新回复(0)