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及连接池工具类搭建的主要内容,如果未能解决你的问题,请参考以下文章

Java与redis交互Jedis连接池JedisPool

JedisPool 网络连接池

三:Redis连接池JedisPool详解Redisi分布式

RedisPool类使用Jedis操作Redis

JedisPool(Redis连接池demo)

jedis的连接池