jedis 连接池工具类,single和sentinel方式

jedis 连接池工具类,single和sentinel方式,第1张

jedis 连接池工具类,single和sentinel方式
package com.util.redis;

import com.google.common.collect.Sets;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisSentinelPool;
import redis.clients.util.Pool;

import java.util.List;


public class RedisUtil {

    private static Logger logger = LoggerFactory.getLogger(RedisUtil.class);

    private static volatile Pool jedisPool;

    private static final String SINGLE = "single";
    private static final String SENTINEL = "sentinel";


    
       public static void init(ConfigProperties configProperties) {
        if (jedisPool == null) {
            synchronized (RedisUtil.class) {
                if (jedisPool == null) {
                    jedisPool = initPool(configProperties);
                }
            }
        }
        if (jedisPool == null) {
            throw new RuntimeException("JedisPool 初始化失败");
        }
    }

   
    public static Pool getInstance() {
        if (jedisPool == null) {
            throw new RuntimeException("JedisPool 没有初始化 ");
        }
        return jedisPool;
    }



    
    public static Jedis getJedis() {
        return getInstance().getResource();
    }


 private static Pool initPool(ConfigProperties configProperties) {
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(configProperties.getMaxTotal());
        config.setMaxIdle(configProperties.getMaxIdle());
        config.setMaxWaitMillis(configProperties.getMaxWaitMillis());
        //在获取连接的时候检查有效性,
        //config.setTestonBorrow(true);
        //在空闲时检查有效性, 默认false
        //config.setTestWhileIdle(true);
        if (CollectionUtils.isEmpty(configProperties.getHosts())) {
            logger.error("redis {} init failed, nodes not configured", configProperties.getType());
            return null;
        }

        if (SINGLE.equals(configProperties.getType())) {
            return new JedisPool(config, configProperties.getHosts().get(0),
                    configProperties.getPort(), configProperties.getTimeout(),
                    configProperties.getPassword(), configProperties.getDatabase()
   return null;

    }


    
    @Data
    public static class ConfigProperties {
        private String type;
        private int maxTotal = 8;
        private int maxIdle = 8;
        private long maxWaitMillis = -1L;
        private List hosts;
        private int port;
        private String password;
        private String masterName;
        private int timeout = 2000;
        private int database;
}

    private RedisUtil() {

    }
      

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5687495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存