目录
配置类
RedissonClient 核心实现及运行参数配置
package com.otc.mall.redisson;
import java.lang.reflect.Method;
import javax.annotation.PostConstruct;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ReflectionUtils;
import com.otc.mall.redisson.config.RedissonLockProperties;
import lombok.extern.slf4j.Slf4j;
/**
* Redisson 自动装配配置类
*
* @author linlin.dong
* @Date 2022年5月31日 上午9:50:35
* @version 1.0
*/
@Slf4j
@ConditionalOnClass(Redisson.class) // 条件装配
@Configuration
@EnableConfigurationProperties({ RedisProperties.class, RedissonLockProperties.class })
public class RedissonConfiguration {
private final static String REDIS_PROTOCOL_PREFIX = "redis://";
private final static String REDISS_PROTOCOL_PREFIX = "rediss://";
@Autowired
private RedisProperties redisProperties;
@Value("${opentide.redisson.timeout:300}")
private int timeout;
@PostConstruct
public void postConstruct() {
log.info(" Starter [RedissionClient Starter] Auto Configure.");
}
@Bean
public RedissonClient redissonClient() {
/**
* 运行模式 useSingleServer: 单机模式 useMasterSlaveServers: 主从模式 useSentinelServers: 哨兵模式 useClusterServers:集群模式
*/
Config config = new Config();
String prefix = REDIS_PROTOCOL_PREFIX;
Method method = ReflectionUtils.findMethod(RedisProperties.class, "isSsl");
if (method != null && (Boolean) ReflectionUtils.invokeMethod(method, redisProperties)) {
prefix = REDISS_PROTOCOL_PREFIX;
}
config.useSingleServer().setAddress(prefix + redisProperties.getHost() + ":" + redisProperties.getPort())
.setConnectTimeout(timeout).setDatabase(redisProperties.getDatabase())
.setPassword(redisProperties.getPassword());
return Redisson.create(config);
}
}
package com.otc.mall.redisson.config;
import java.util.concurrent.TimeUnit;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframewor