MyJedisConfig.java 2.9 KB
package com.topdraw.redis.config;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.data.redis.connection.*;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.StringUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisSentinelPool;

import javax.annotation.Resource;
import java.util.HashSet;
import java.util.Set;

/**
 * @author :
 * @description:
 * @function :
 * @date :Created in 2022/2/27 10:39
 * @version: :
 * @modified By:
 * @since : modified in 2022/2/27 10:39
 */
@Configuration
@Slf4j
public class MyJedisConfig {

    /***生产环境要打开此配置*/
    @Value("${spring.redis.sentinel.master}")
    private String master;

    @Value("${spring.redis.sentinel.nodes}")
    private String sentinelHost;

    @Bean
    public Jedis jedisPool(JedisPoolConfig jedisPoolConfig) {
        String[] split = sentinelHost.split(",");
        Set<String> sentinels = new HashSet<>();
        for (int i = 0; i < split.length; i++) {
            String s = split[i];
            sentinels.add(s);
        }

        JedisSentinelPool jedisPool = new JedisSentinelPool(master, sentinels, jedisPoolConfig);
        Jedis jedis = jedisPool.getResource();
        return jedis;
    }

    @Bean
    public JedisPoolConfig jedisPoolConfig() {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(15);
        jedisPoolConfig.setMaxIdle(10);
        jedisPoolConfig.setMinIdle(5);
        jedisPoolConfig.setMaxWaitMillis(10000);
        jedisPoolConfig.setTestOnBorrow(true);

        return jedisPoolConfig;
    }

    /*@Bean
    public Jedis jedisPool(@Value("${spring.redis.host}") String host,
                               @Value("${spring.redis.port}") int port,
                               @Value("${spring.redis.timeout}") int timeout,
//                           @Value("${spring.redis.password}") String password,
                           JedisPoolConfig jedisPoolConfig) {

//        JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout,"redis123");
        JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout);

        return jedisPool.getResource();
    }*/
}