redis 之 jedis连接池

jedis连接池的基本概念

jedis连接资源的创建与销毁是很消耗程序性能,所以jedis为我们提供了jedis的池化技术。

jedisPool在创建时初始化一些连接资源存储到连接池中,使用jedis连接资源时不需要创建,而是从连接池中获取一个资源进行redis的操作,使用完毕后,不需要销毁该jedis连接资源,而是将该资源归还给连接池,供其他请求使用。

目录结构

 

 

配置文件redis.properties

redis.maxTotal=100
redis.maxIdle=30
redis.minIdle=10
redis.url=192.168.1.181
redis.port=6379
redis.password=password
redis.timeout=3000

连接池工具类JedisPoolUtil

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 JedisPoolUtil {
    private static JedisPool pool = null;
    static {
        //加载配置文件
        InputStream in = JedisPoolUtil.class.getClassLoader().getResourceAsStream("redis.properties");
        Properties pro = new Properties();
        try {
            pro.load(in);
        } catch (IOException e){
            e.printStackTrace();
            System.out.println("加载配置文件失败");
        }
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        //最大连接数
        poolConfig.setMaxTotal(Integer.parseInt( pro.get("redis.maxTotal").toString()));
        //最大空闲连接数
        poolConfig.setMaxIdle(Integer.parseInt( pro.get("redis.maxIdle").toString()));
        //最小空闲连接数
        poolConfig.setMinIdle(Integer.parseInt( pro.get("redis.minIdle").toString()));
        int timeout = Integer.parseInt(pro.get("redis.timeout").toString());
        String password = pro.get("redis.password").toString();
        // public JedisPool(GenericObjectPoolConfig poolConfig, String host, int port, int timeout, String password)
        pool = new JedisPool(poolConfig, pro.get("redis.url").toString(),Integer.parseInt( pro.get("redis.port")
                .toString()),timeout,password);

    }
    public static Jedis getJedis(){
        return pool.getResource();
    }
    public static void release(Jedis jedis){
        if(null != jedis){
            jedis.close();
        }
    }
}

测试类JedisPoolTest

public class JedisPoolTest {
    public static void main(String[] args) {
        Jedis jedis = JedisPoolUtil.getJedis();
        System.out.println(jedis.ping());
        //查询所有key
        Set<String> keys = jedis.keys("*");
        //遍历、key
        for(Iterator iterator = keys.iterator(); iterator.hasNext();){
            String key = (String)iterator.next();
            System.out.println(key);
        }
    }
}

 

 

这个jedis连接池我使用了密码验证的,无密码验证或者需要其他配置的看JedisPool的构造方法,寻找适合自己的。

posted @ 2020-07-11 17:00  念月_xy  阅读(748)  评论(0编辑  收藏  举报