• 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的构造方法,寻找适合自己的。

  • 相关阅读:
    Excel 用row()函数 在Excel中自动添加序号,
    sql server数据导入
    Excel导入sq server后数据列以科学计数法显示
    left join 和 left outer join 的区别
    多点求值与暴力插值
    生成函数

    洲阁筛 学习笔记
    「NOI2017」游戏 解题报告
    CF 1045 H. Self-exploration 解题报告
  • 原文地址:https://www.cnblogs.com/zero-vic/p/13284301.html
Copyright © 2020-2023  润新知