使用连接池技术可以很方便高效地管理连接资源,这一点和MySQL类似。
核心类为JedisPool,它的构造方法有三个参数,后两个和Jedis一致,第一个参数需要指定连接池的配置对象,所以也要构造一个配置对象来协同工作!
package com.rr.learnredis;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisPoolTest {
// 通过redis连接池获得Jedis连接对象
@Test
public void jedisPoolTest1() {
// 0.创建连接池配置对象
JedisPoolConfig cofig = new JedisPoolConfig();
cofig.setMaxIdle(30); // 最大连接闲置个数,超过30个闲置连接就开始释放连接
cofig.setMinIdle(10); // 最小连接闲置个数,不足10个闲置连接就开始创建连接
cofig.setMaxTotal(50); // 最大连接数
// 1.创建一个redis的redis连接池
JedisPool pool = new JedisPool(cofig, "localhost", 6379);
// 2.从池子中获取redis连接资源
Jedis jedis = pool.getResource();
// 3.操作数据库
jedis.set("addr", "武汉");
System.out.println(jedis.get("addr"));
// 4.关闭资源
jedis.close();
pool.close();
}
}
和JDBC类似,我们也可以创建一个连接资源工具类:
首先在src根目录下创建redis配置文件redis.properties:
redis.maxIdle=30
redis.minIdle=10
redis.maxTotal=50
redis.url=127.0.0.1
redis.port=6379
工具类及其中的main测试方法:
package com.rr.jedisutils;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisPoolUtils {
private static JedisPool pool;
static {
// 加载配置文件
InputStream inStr = JedisPoolUtils.class.getClassLoader().getResourceAsStream("redis.properties");
Properties pro = new Properties();
try {
pro.load(inStr);
} catch (IOException e) {
e.printStackTrace();
}
// 获得池对象
JedisPoolConfig cofig = new JedisPoolConfig();
cofig.setMaxIdle(Integer.parseInt(pro.get("redis.maxIdle").toString()));
cofig.setMinIdle(Integer.parseInt(pro.get("redis.minIdle").toString()));
cofig.setMaxTotal(Integer.parseInt(pro.get("redis.maxTotal").toString()));
pool = new JedisPool(cofig, pro.getProperty("redis.url"), Integer.parseInt(pro.getProperty("redis.port")));
}
// 获得Jedis资源的方法
public static Jedis getJedis() {
return pool.getResource();
}
public static void main(String[] args) {
System.out.print(getJedis().get("addr"));
}
}