redis之连接池的使用(java版)

1、需要导入的pom.xml

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>

2、连接池工具类

package com.cn.until;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 *在高版本的jedis jar包,比如本版本2.9.0,JedisPoolConfig没有setMaxActive和setMaxWait属性了
 * 这是因为高版本中官方废弃了此方法,用以下两个属性替换。
 * maxActive  ==>  maxTotal
 * maxWait==>  maxWaitMillis
 */
public class RedisUtil {
    //创建连接池对象
    private static JedisPool pool=null;
    //设定连接超时时间
    private static int POOL_TIMEOUT = 10000;
    //创建连接池
    public static JedisPool getPool(String host,int port,String pwd){
        if(pool==null ){
            JedisPoolConfig config = new JedisPoolConfig();
            //设置jedis的最大实例数
            config.setMaxTotal(10);
            //设置jedis的最大空闲实例数
            config.setMaxIdle(5);
            // 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
            config.setMaxWaitMillis(1000 * 10);
            // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
            config.setTestOnBorrow(true);

            pool=new JedisPool(config,host,port,POOL_TIMEOUT,pwd);
        }
        return pool;
    }


    //关闭连接池
    public static void closePool(){
        if(pool!=null){
            pool.close();
        }
    }

    //归还jedis实例到连接池
    public static void returnJedis2Pool(Jedis jedis){
        if(jedis!=null){
            jedis.close();
        }
    }
}

3、测试

package com.cn.service;

import com.cn.until.RedisUtil;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class RedisService {
    public static void main(String[] args) {
        String host="master";
        int port=6379;
        String pwd="123456";
        long l1=System.currentTimeMillis();
        for(int i=0;i<100000;i++) {
            JedisPool pool = null;
            Jedis jedis=null;
            try {
                pool = RedisUtil.getPool(host, port, pwd);
                jedis = pool.getResource();
                jedis.select(21);
                jedis.set(i + "a", i + "b");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                RedisUtil.returnJedis2Pool(jedis);
            }
        }
        RedisUtil.closePool();
        long l2=System.currentTimeMillis();
        System.out.println("已经完成,用时:"+(l2-l1));
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值