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();
}

运行结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45525272/article/details/126822701