Redis多集群客户端

spring:

redis:

cluster:

userProfilePool

pool1:

nodes: 10.101.30.18:11117,10.101.39.148:11117,10.101.29.22:11117

timeout: 20000

maxIdle: 300

maxWaitMillis: 1000

maxTotal: 1000

minEvictableIdleTimeMillis: 300000

dataStreamPool

pool2:

nodes: 10.101.30.19:11117,10.101.39.149:11117,10.101.29.23:11117

timeout: 20000

maxIdle: 300

maxWaitMillis: 1000

maxTotal: 1000

minEvictableIdleTimeMillis: 300000

三、配置类


@Data

public class RedisClusterPoolProperties {

private List nodes;

private int timeout;

private int maxIdle;

private long maxWaitMillis;

private int maxTotal;

private long minEvictableIdleTimeMillis;

}

@Configuration

@Slf4j

@ConfigurationProperties(prefix = “spring.redis.cluster.pool1”)

public class UserProfileRedisConfig extends RedisClusterPoolProperties {

@Bean(name = “userProfileRedisConnectionFactory”)

@Primary

public RedisConnectionFactory connectionFactory() {

log.info(“初始化UserProfile集群开始”);

JedisConnectionFactory factory = new JedisConnectionFactory(new RedisClusterConfiguration(this.getNodes()));

JedisPoolConfig config = (JedisPoolConfig) factory.getPoolConfig();

config.setMaxIdle(this.getMaxIdle());

config.setMaxWaitMillis(this.getMaxWaitMillis());

config.setMaxTotal(this.getMaxTotal());

config.setMinEvictableIdleTimeMillis(this.getMinEvictableIdleTimeMillis());

log.info(“初始化UserProfile集群结束”);

return factory;

}

}

另一个spring.redis.cluster.pool2 类似

@Configuration

public class MultiRedisClusterConfig {

@Resource(name = “userProfileRedisConnectionFactory”)

private RedisConnectionFactory userProfileRedisConnectionFactory;

@Resource(name = “dataStreamRedisConnectionFactory”)

private RedisConnectionFactory dataStreamRedisConnectionFactory;

@Bean(name = “userProfileRedisTemplate”)

@Primary

public RedisTemplate<Object, Object> userProfileRedisTemplate() {

return getRedisTemplate(userProfileRedisConnectionFactor
y);

}

@Bean(name = “userProfileStringRedisTemplate”)

@Primary

public StringRedisTemplate userProfileStringRedisTemplate() {

return getStringRedisTemplate(userProfileRedisConnectionFactory);

}

@Bean(name = “dataStreamRedisTemplate”)

public RedisTemplate<Object, Object> dataStreamRedisTemplate() {

return getRedisTemplate(dataStreamRedisConnectionFactory);

}

@Bean(name = “dataStreamStringRedisTemplate”)

public StringRedisTemplate dataStreamStringRedisTemplate() {

return getStringRedisTemplate(dataStreamRedisConnectionFactory);

}

private RedisTemplate<Object,Object> getRedisTemplate(RedisConnectionFactory connectionFactory){

RedisTemplate<Object,Object> template = new RedisTemplate<Object, Object>();

template.setConnectionFactory(connectionFactory);

setSerializer(template);

template.afterPropertiesSet();

return template;

}

private StringRedisTemplate getStringRedisTemplate(RedisConnectionFactory connectionFactory){

StringRedisTemplate template = new StringRedisTemplate();

template.setConnectionFactory(connectionFactory);

setStringSerializer(template);

template.afterPropertiesSet();

return template;

}

private void setStringSerializer(StringRedisTemplate template){

RedisSerializer stringSerializer = new StringRedisSerializer();

template.setKeySerializer(stringSerializer);

template.setValueSerializer(stringSerializer);

template.setHashKeySerializer(stringSerializer );

template.setHashValueSerializer(stringSerializer );

template.afterPropertiesSet();

}

private void setSerializer(RedisTemplate<Object, Object> template) {

Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);

ObjectMapper om = new ObjectMapper();

om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);

om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);

jackson2JsonRedisSerializer.setObjectMapper(om);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值