tencent cloud

文档反馈

Jedis 连接池代码示例

最后更新时间:2024-01-26 15:19:30

    准备工作

    下载客户端 Jedis,推荐使用最新版本。

    代码示例

    连接池代码示例及其中各个参数的含义,如下所示:
    参数
    含义
    建议
    setMaxTotal
    连接池中的最大连接数。
    设置该参数,需要考虑业务并发量、访问延迟、最大连接数等因素。
    setMaxIdle
    连接池最大空闲连接数。
    建议与 setMaxTotal 相同。
    setMinIdle
    资源池允许的最小空闲连接数。
    建议与 setMaxTotal 相同。
    timeout
    超时时间。
    该参数需要根据业务模型及网络链路性能设置。
    一般网络延迟较低,服务耗时非常敏感的业务,可以设置50-100ms。
    如果业务容忍度高,或者业务访问 kv 数据较大,可以设置500ms、1000ms。
    setTestOnBorrow
    设置在从连接池中获取连接时是否进行连接测试。
    如果设置为 true,则在获取连接时会调用 connection.isValid()方法进行连接测试。以确保获取到的连接是可用的,但同时会消耗 QPS 性能。
    如果设置为 false,则不会进行连接测试。可以提高连接获取的速度,但是可能会获取到不可用的连接。
    setTestOnReturn
    设置将连接归还连接池时,是否进行校验。
    如果设置为 true,则在归还连接时会调用 connection.isValid() 方法进行连接测试,以确保归还的连接是可用的。
    如果设置为 false,则不会进行连接测试。可以提高归还连接的速度,但是可能会归还不可用的连接。通常情况下建议设置为 true
    JedisPoolConfig config = new JedisPoolConfig();
    // 最大空闲连接数,需自行评估,不超过Redis实例的最大连接数
    config.setMaxIdle(200);
    // 最大连接数,需自行评估,不超过Redis实例的最大连接数
    config.setMaxTotal(200);
    //资源池允许的最小空闲连接数
    config.setMinIdle(20);
    //当资源池连接用尽后,调用者的最大等待时间(单位为毫秒)
    config.setMaxWaitMillis(3000);
    //从连接池中获取对象时,会先进行ping检查,检查不通过,会从连接池中移走并销毁。
    config.setTestOnBorrow(false);
    //归还连接时,会进行检查,检查不通过,则销毁。
    config.setTestOnReturn(false);
    // 设置连接池方式为队列
    config.setLifo(false);
    //设置最小连接检查
    config.setTimeBetweenEvictionRunsMillis(3000);
    // 分别将host和password的值替换为实例的连接地址、密码
    String host = "192.xx.xx.195";
    String password = "123ad6aq";
    //读写超时(单位为毫秒)
    int timeout = 2000;
    int port = 6379;
    JedisPool pool = new JedisPool(config,host,port,timeout,password);
    Jedis jedis = null;
    boolean broken = false;
    try
    {
    jedis = pool.getResource();
    /// ... do stuff here ... for example
    jedis.set("redis", "tencent");
    String foobar = jedis.get("redis");
    jedis.zadd("tec", 0, "a");
    jedis.zadd("tec", 0, "b");
    Set < String > sose = jedis.zrange("tec", 0, -1);
    }
    catch(Exception e)
    {
    broken = true;
    }
    finally
    {
    if(broken)
    {
    pool.returnBrokenResource(jedis);
    }
    else if(jedis != null)
    {
    pool.returnResource(jedis);
    }
    }
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持