并发情况下Redis连接池不够

并发情况下Redis连接池不够

但是检查了连接数只有几十个,但是应用一直报Redis连接池不够

不知道是不是下面这段代码关闭有问题

/**
     * 处理 jedis请求
     *
     * @param j 处理逻辑,通过 lambda行为参数化
     * @return 处理结果
     */
    private <T> T excuteByJedis(JedisExecutor<Jedis, T> j) throws RedisConnectException {
        Jedis jedis = jedisPool.getResource();
        try{
            return j.excute(jedis);
        } catch (Exception e) {
            throw new RedisConnectException(e.getMessage());
        }finally {
            if(jedis != null){
                jedis.close();
            }
        }
    }

Redis配置

Jedis jedis = jedisPool.getResource();

用完后释放一下。

查看:
 
方法1:在redis-cli命令行使用:info clients可以查看当前的redis连接数
 
127.0.0.1:6379> info clients
#Clients
connected_clients:621
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
127.0.0.1:6379>
 
方法2:config get maxclients 可以查询redis允许的最大连接数
 
127.0.0.1:6379> CONFIG GET maxclients
    ##1) "maxclients"
    ##2) "10000"
127.0.0.1:6379>
 
设置:
 
1. 在2.6之后版本,可以修改最大连接数配置,默认10000,可以在redis.conf配置文件中修改
 
...
# maxclients 10000
...
 
2.config set maxclients num 可以设置redis允许的最大连接数
 
127.0.0.1:6379> CONFIG set maxclients 10
OK
127.0.0.1:6379>
 
 
3.启动redis.service服务时加参数--maxclients 100000来设置最大连接数限制
 
redis-server --maxclients 100000 -f /etc/redis.conf

 

你的 finally 代码里面加入手动断开连接,有的时候他自己不会断开连接,一直占用

 

RedisClient.getInstance().closeJedis(jedis);