mirror of
https://gitee.com/san-bing/JChargePointProtocol
synced 2026-06-19 22:50:51 +08:00
60 lines
2.3 KiB
Java
60 lines
2.3 KiB
Java
/**
|
||
* 开源代码,仅供学习和交流研究使用,商用请联系三丙
|
||
* 微信:mohan_88888
|
||
* 抖音:程序员三丙
|
||
* 付费课程:https://www.bilibili.com/cheese/play/ss942400790
|
||
*/
|
||
package sanbing.jcpp.infrastructure.cache;
|
||
|
||
import lombok.extern.slf4j.Slf4j;
|
||
import org.springframework.beans.factory.annotation.Value;
|
||
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
|
||
import org.springframework.context.annotation.Configuration;
|
||
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
|
||
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
|
||
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
|
||
|
||
@Configuration
|
||
@ConditionalOnExpression("'${cache.type:null}'=='redis' && '${redis.connection.type:null}'=='sentinel'")
|
||
@Slf4j
|
||
public class JCPPJCPPRedisSentinelConfiguration extends JCPPRedisCacheConfiguration {
|
||
|
||
@Value("${redis.sentinel.master:}")
|
||
private String master;
|
||
|
||
@Value("${redis.sentinel.sentinels:}")
|
||
private String sentinels;
|
||
|
||
@Value("${redis.sentinel.password:}")
|
||
private String sentinelPassword;
|
||
|
||
@Value("${redis.sentinel.useDefaultPoolConfig:true}")
|
||
private boolean useDefaultPoolConfig;
|
||
|
||
@Value("${redis.db:}")
|
||
private Integer database;
|
||
|
||
@Value("${redis.password:}")
|
||
private String password;
|
||
|
||
@Override
|
||
public LettuceConnectionFactory loadFactory() {
|
||
log.info("Initializing Redis Sentinel on {}, sentinels: {}", master, sentinels);
|
||
RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration();
|
||
redisSentinelConfiguration.setMaster(master);
|
||
redisSentinelConfiguration.setSentinels(getNodes(sentinels));
|
||
redisSentinelConfiguration.setSentinelPassword(sentinelPassword);
|
||
redisSentinelConfiguration.setPassword(password);
|
||
redisSentinelConfiguration.setDatabase(database);
|
||
return new LettuceConnectionFactory(redisSentinelConfiguration, buildClientConfig());
|
||
}
|
||
|
||
private LettucePoolingClientConfiguration buildClientConfig() {
|
||
var clientConfigurationBuilder = LettucePoolingClientConfiguration.builder();
|
||
if (!useDefaultPoolConfig) {
|
||
clientConfigurationBuilder.poolConfig(buildPoolConfig());
|
||
}
|
||
return clientConfigurationBuilder.build();
|
||
}
|
||
}
|