Jedis连接池:JedisPool及连接池工具类搭建
Posted 流楚丶格念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jedis连接池:JedisPool及连接池工具类搭建相关的知识,希望对你有一定的参考价值。
文章目录
Jedis连接池
连接池建立步骤
JedisPool的配置参数大部分是由JedisPoolConfig的对应项来赋值的,所以首先我们要设置JedisPoolConfig参数。
JedisPoolConfig的参数如下所示:
参数 | 说明 | 默认值 | 建议 |
---|---|---|---|
maxTotal | 资源池中的最大连接数 | 8 | 参见关键参数设置建议 |
maxIdle | 资源池允许的最大空闲连接数 | 8 | 参见关键参数设置建议 |
minIdle | 资源池确保的最少空闲连接数 | 0 | 参见关键参数设置建议 |
blockWhenExhausted | 当资源池用尽后,调用者是否要等待。只有当值为true时,下面的maxWaitMillis才会生效。 | true | 建议使用默认值。 |
maxWaitMillis | 当资源池连接用尽后,调用者的最大等待时间(单位为毫秒)。 | -1(表示永不超时) | 不建议使用默认值。 |
testOnBorrow | 向资源池借用连接时是否做连接有效性检测(ping)。检测到的无效连接将会被移除。 | false | 业务量很大时候建议设置为false,减少一次ping的开销。 |
testOnReturn | 向资源池归还连接时是否做连接有效性检测(ping)。检测到无效连接将会被移除。 | false | 业务量很大时候建议设置为false,减少一次ping的开销。 |
jmxEnabled | 是否开启JMX监控 | true | 建议开启,请注意应用本身也需 |
设置完配置之后我们就可以去创建jedis的连接池了,使用的是JedisPoo构造函数
其参数如下:
- 第一个参数连池的配置 JedisPoolConfig
- 第二个参数 ip、域名或者主机名
- 第三个参数 端口
- 第四个连接的超时时间
- 第五个参数连接的密码
代码案例
代码如下:
@Test
public void JedisPoolTest()
//1.创建连接池配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(30);
config.setMaxIdle(10);
//2.创建连接池对象
//创建jedis的连接池
//第一个参数连池的配置 JedisPoolConfig
//第二个参数 ip、域名或者主机名
//第三个参数 端口
//第四个连接的超时时间
//第五个参数连接的密码
JedisPool jedisPool = new JedisPool(config, "localhost", Integer.parseInt("6379"), 1800);
//3.建立连接
Jedis jedis = jedisPool.getResource();
//4.操作数据
jedis.set("pooltest", "test");
String value = jedis.get("pooltest");
System.out.println(value);
//关闭连接,将连接还入池中
jedis.close();
运行结果:
JedisPoolUtils工具类
创建配置文件
在resources创建jedis.properties配置文件
host=localhost
port=6379
password=
maxTotal=30
maxIdle=10
编写工具类
之后我们就可以通过getJedis获取连接池了
package com.yyl.firstdemo.utils;
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 JedisPoolUtils
private static JedisPool jedisPool;
static
//读取jedis.properties配置文件
InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
//创建Properties对象
Properties properties = new Properties();
try
//加载输入流is
properties.load(is);
catch (IOException e)
e.printStackTrace();
//读取配置数据
String host = properties.getProperty("host");
String port = properties.getProperty("port");
String password = properties.getProperty("password");
String maxTotal = properties.getProperty("maxTotal");
String maxIdle = properties.getProperty("maxIdle");
//创建jedisPool对象
//创建一个jedis连接配置对象 JedisPoolConfig
JedisPoolConfig config = new JedisPoolConfig();
//设置连接池最大的连接数量
config.setMaxTotal(Integer.parseInt(maxTotal));
//设置连接池空闲状态保持的连接数量
config.setMaxIdle(Integer.parseInt(maxIdle));
//创建jedis的连接池
//第一个参数连池的配置 JedisPoolConfig
//第二个参数 ip、域名或者主机名
//第三个参数 端口
//第四个连接的超时时间
//第五个参数连接的密码
jedisPool = new JedisPool(config, host, Integer.parseInt(port), 1800);
/**
* 获取jedis对象
*
* @return
*/
public static Jedis getJedis()
return jedisPool.getResource();
编写测试代码
@Test
public void JedisPoolUtilTest()
//建立连接
Jedis jedis = JedisPoolUtils.getJedis();
//操作数据
jedis.set("utilstest", "test");
//获取数据
String value = jedis.get("utilstest");
System.out.println(value);
//关闭连接
jedis.close();
运行结果如下:
以上是关于Jedis连接池:JedisPool及连接池工具类搭建的主要内容,如果未能解决你的问题,请参考以下文章