![JAR search and dependency download from the Maven repository](/logo.png)
com.gitee.fufu669.config.redis.ShardedJedisPoolConfig Maven / Gradle / Ivy
package com.gitee.fufu669.config.redis;
import java.util.ArrayList;
import java.util.List;
import com.google.common.collect.Lists;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedisPool;
@SuppressWarnings({ "rawtypes","unused" })
@Configuration
/** @author wangfupeng */
public class ShardedJedisPoolConfig {
private static final Logger logger = LoggerFactory.getLogger(ShardedJedisPoolConfig.class);
public static final String ONLINE = "online";
@Value("${redis.maxWaitMillis:}")
private Long maxWaitMillis;
@Value("${redis.testOnBorrow:}")
private Boolean testOnBorrow;
@Value("${redis.testOnReturn:}")
private Boolean testOnReturn;
@Value("${redis.maxIdle:}")
private Integer maxIdle;
@Value("${redis.maxTotal:}")
private Integer maxTotal;
@Value("${redis.minIdle:}")
private Integer minIdle;
@Value("${redis.lifo:}")
private Boolean lifo;
@Value("${redis.hostAndPorts:}")
private String hostAndPorts;
@Value("${redis.password:}")
private String password;
@Bean(name = "jedisPoolConfigCacheFetchLater")
public redis.clients.jedis.JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
jedisPoolConfig.setTestOnBorrow(testOnBorrow);
jedisPoolConfig.setMaxTotal(maxTotal);
jedisPoolConfig.setMinIdle(minIdle);
jedisPoolConfig.setLifo(lifo);
return jedisPoolConfig;
}
@Bean(name = "shardedJedisPoolCacheFetchLater")
public redis.clients.jedis.ShardedJedisPool shardedJedisPool(@Qualifier("jedisPoolConfigCacheFetchLater") JedisPoolConfig jedisPoolConfig) {
List shards = new ArrayList();
String[] hostAndPortsArray = hostAndPorts.split(",");
Lists.newArrayList(hostAndPortsArray).forEach(host -> {
String[] hostArray = host.split(":");
String hostAddress = hostArray[0];
Integer port = Integer.valueOf(hostArray[1]);
JedisShardInfo info = new JedisShardInfo(hostAddress, port);
info.setPassword(password);
shards.add(info);
});
ShardedJedisPool shardedJedisPool = new ShardedJedisPool(jedisPoolConfig, shards);
return shardedJedisPool;
}
@Bean(name = "keySerializer")
public RedisSerializer keySerializer() {
return new StringRedisSerializer();
}
@Bean(name = "valueSerializer")
public RedisSerializer valueSerializer() {
return new CustomGenericJackson2JsonRedisSerializer();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy