美文网首页
工具类--Redis连接池(单机)

工具类--Redis连接池(单机)

作者: wbpailxt | 来源:发表于2020-01-08 08:51 被阅读0次
    package com.mmall.common;
    
    import com.mmall.util.PropertiesUtil;
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    public class RedisPool {
        private static JedisPool pool;//jedis连接池
        private static Integer maxTotal = Integer.parseInt(PropertiesUtil.getProperty("redis.max.total","20")); //最大连接数
        private static Integer maxIdle = Integer.parseInt(PropertiesUtil.getProperty("redis.max.idle","20"));//在jedispool中最大的idle状态(空闲的)的jedis实例的个数
        private static Integer minIdle = Integer.parseInt(PropertiesUtil.getProperty("redis.min.idle","20"));//在jedispool中最小的idle状态(空闲的)的jedis实例的个数
    
        //在borrow一个jedis实例的时候,是否要进行验证操作,如果赋值true。则得到的jedis实例肯定是可以用的。
        private static Boolean testOnBorrow = Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.borrow","true"));
        //在return一个jedis实例的时候,是否要进行验证操作,如果赋值true。则放回jedispool的jedis实例肯定是可以用的。
        // 那么由于我们只要这个jedis链接抛出异常,我们就会把它放到brokenResource,就不需要再验证这个jedis是否可用了。
        private static Boolean testOnReturn = Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.return","false"));
    
        private static String redisIp = PropertiesUtil.getProperty("redis.ip");
        private static Integer redisPort = Integer.parseInt(PropertiesUtil.getProperty("redis.port"));
    
    
        private static void initPool(){
            JedisPoolConfig config = new JedisPoolConfig();
    
            config.setMaxTotal(maxTotal);
            config.setMaxIdle(maxIdle);
            config.setMinIdle(minIdle);
    
            config.setTestOnBorrow(testOnBorrow);
            config.setTestOnReturn(testOnReturn);
    
            config.setBlockWhenExhausted(true);//连接耗尽的时候,是否阻塞,false会抛出异常,true阻塞直到超时。默认为true。
    
            pool = new JedisPool(config,redisIp,redisPort,1000*2);
        }
    
        static{
            initPool();
        }
    
        public static Jedis getJedis(){
            return pool.getResource();
        }
    
        public static void returnBrokenResource(Jedis jedis){
            pool.returnBrokenResource(jedis);
        }
    
        public static void returnResource(Jedis jedis){
            pool.returnResource(jedis);
        }
    
        public static void main(String[] args) {
            Jedis jedis = pool.getResource();
            jedis.set("geelykey","geelyvalue");
            returnResource(jedis);
    
            pool.destroy();//临时调用,销毁连接池中的所有连接
            System.out.println("program is end");
    
    
        }
    }
    
    

    相关文章

      网友评论

          本文标题:工具类--Redis连接池(单机)

          本文链接:https://www.haomeiwen.com/subject/agyjactx.html