【是什么?】
不知大家是否还记得ODBC连接池,比如C3P0,它的作用就是在数据库和应用程序之间加了一层,这样提高了对数据库操作的性能。
Redis是一个数据库,所以Redis连接池和ODBC的连接池的本质是一样的。
没有连接池之前:
加入连接池之后:
【为什么?】
如果没有连接池,每一次的存取都需要新建一个连接,使用完后再断开,如果是频繁访问的场景,那也太不划算了。有了连接池,就相当于有了一个“大池子”,池子里的连接都是通着的。你如果想连接,自己去池子里找,自助连接。
这就类似于:你要啥,售货员会给你拿啥的小卖部和自助购物的超市的区别。
【怎么用?】
第一步:新建一个class类,用来进行连接池的配置。
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* Created by silivar on 2018/11/3.
* 连接池
*/
public class RedisUtil {
private RedisUtil() {
}
private static String ip = "localhost";
private static int port = 6379;
//向redis要连接池的超时时间
private static int timeout = 10000;
//进入redis的密码
//private static String auth = "root";
private static JedisPool pool = null;
static {
JedisPoolConfig config = new JedisPoolConfig();
//最大连接数,默认是1万
config.setMaxTotal(1024);
//最大空闲实例数
config.setMaxIdle(200);
//等连接池给连接的最大时间,毫秒,设成-1表示永远不超时
config.setMaxWaitMillis(10000);
//borrow一个实例的时候,是否提前进行validate操作
config.setTestOnBorrow(true);
pool = new JedisPool(config, ip, port, timeout);
}
//得到redis连接
public synchronized static Jedis getJedis() {
if (pool != null) {
return pool.getResource();
} else {
return null;
}
}
//关闭redis连接
public static void close(final Jedis redis) {
if (redis != null) {
redis.close();
}
}
}
第二步:新建一个测试类,用来测试连接池是否能用。
红色框里的为有连接池时,连接redis的方法。
被注释掉的绿色框里的为如果没有连接池,要怎么连接redis。
第三步:运行main方法,看到最后结果。
【小结】
参考博客:https://blog.csdn.net/weixin_39040059/article/details/79054509