美文网首页
Java Redis(三):建立Redis连接池

Java Redis(三):建立Redis连接池

作者: 蓝汝丶琪 | 来源:发表于2018-05-28 23:04 被阅读223次

    Redis 连接池

    public class RedisPool {
        private static JedisPool pool;//jedis连接池
        private static Integer maxTotal = ; //最大连接数
        private static Integer maxIdle = ;//在jedispool中最大的idle状态(空闲的)的jedis实例的个数
        private static Integer minIdle = ;//在jedispool中最小的idle状态(空闲的)的jedis实例的个数
    
        private static Boolean testOnBorrow = ;//在borrow一个jedis实例的时候,是否要进行验证操作,如果赋值true。则得到的jedis实例肯定是可以用的。
        private static Boolean testOnReturn = ;//在return一个jedis实例的时候,是否要进行验证操作,如果赋值true。则放回jedispool的jedis实例肯定是可以用的。
    
        private static String redisIp = ;
        private static Integer redisPort = ;
    
    
        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);
        }
    
    
    

    Redis 工具类

    public class RedisPoolUtil {
    
    
        /**
         * 设置key的有效期,单位是秒
         * @param key
         * @param exTime
         * @return
         */
        public static Long expire(String key,int exTime){
            Jedis jedis = null;
            Long result = null;
            try {
                jedis = RedisPool.getJedis();
                result = jedis.expire(key,exTime);
            } catch (Exception e) {
                log.error("expire key:{} error",key,e);
                RedisPool.returnBrokenResource(jedis);
                return result;
            }
            RedisPool.returnResource(jedis);
            return result;
        }
    
        //exTime的单位是秒
        public static String setEx(String key,String value,int exTime){
            Jedis jedis = null;
            String result = null;
            try {
                jedis = RedisPool.getJedis();
                result = jedis.setex(key,exTime,value);
            } catch (Exception e) {
                log.error("setex key:{} value:{} error",key,value,e);
                RedisPool.returnBrokenResource(jedis);
                return result;
            }
            RedisPool.returnResource(jedis);
            return result;
        }
    
        public static String set(String key,String value){
            Jedis jedis = null;
            String result = null;
    
            try {
                jedis = RedisPool.getJedis();
                result = jedis.set(key,value);
            } catch (Exception e) {
                log.error("set key:{} value:{} error",key,value,e);
                RedisPool.returnBrokenResource(jedis);
                return result;
            }
            RedisPool.returnResource(jedis);
            return result;
        }
    
        public static String get(String key){
            Jedis jedis = null;
            String result = null;
            try {
                jedis = RedisPool.getJedis();
                result = jedis.get(key);
            } catch (Exception e) {
                log.error("get key:{} error",key,e);
                RedisPool.returnBrokenResource(jedis);
                return result;
            }
            RedisPool.returnResource(jedis);
            return result;
        }
    
        public static Long del(String key){
            Jedis jedis = null;
            Long result = null;
            try {
                jedis = RedisPool.getJedis();
                result = jedis.del(key);
            } catch (Exception e) {
                log.error("del key:{} error",key,e);
                RedisPool.returnBrokenResource(jedis);
                return result;
            }
            RedisPool.returnResource(jedis);
            return result;
        }
    }
    

    相关文章

      网友评论

          本文标题:Java Redis(三):建立Redis连接池

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