栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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() {

    }
      

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/686968.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号