All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gitee.fufu669.config.redis.ShardedJedisPoolConfig Maven / Gradle / Ivy

There is a newer version: 6.666.66021
Show newest version
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