fix redis

This commit is contained in:
ran.shang
2025-12-29 17:19:31 +08:00
parent ee95dfa2c2
commit d8cecbe135
4 changed files with 178 additions and 168 deletions

25
pom.xml
View File

@@ -162,6 +162,12 @@
<scope>runtime</scope> <scope>runtime</scope>
</dependency> </dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId> <artifactId>druid-spring-boot-starter</artifactId>
@@ -203,20 +209,27 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId> <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> </dependency>
<dependency> <!--<dependency>
<groupId>org.redisson</groupId> <groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId> <artifactId>redisson-spring-boot-starter</artifactId>
<version>3.15.6</version> <version>3.15.6</version>
</dependency> </dependency>-->
<dependency> <dependency>
<groupId>io.netty</groupId> <groupId>io.netty</groupId>
<artifactId>netty-all</artifactId> <artifactId>netty-all</artifactId>
</dependency> </dependency>
<!-- <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-data-21</artifactId> <dependency>
<version>3.11.0</version> </dependency> <dependency> <groupId>org.redisson</groupId> <groupId>org.redisson</groupId>
<artifactId>redisson</artifactId> <version>3.11.0</version> </dependency> --> <artifactId>redisson-spring-data-21</artifactId>
<version>3.11.0</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.11.0</version>
</dependency>
<dependency> <dependency>
<groupId>cn.hutool</groupId> <groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId> <artifactId>hutool-all</artifactId>
<version>5.8.16</version> <version>5.8.16</version>

View File

@@ -45,10 +45,6 @@ public class RedisConfig {
redisTemplate.afterPropertiesSet(); redisTemplate.afterPropertiesSet();
return redisTemplate; return redisTemplate;
} }
@Bean
public RedissonUtils redissonUtils(RedissonClient redissonClient) {
return new RedissonUtils(redissonClient);
}
} }

View File

@@ -1,158 +1,158 @@
//package com.newyetai.frame.redis.redisson; package com.senmesh.frame.redis.redisson;
//
//import com.newyetai.frame.redis.property.RedissonProperties; import com.senmesh.frame.redis.property.RedissonProperties;
//import java.lang.reflect.Method; import java.lang.reflect.Method;
//import java.util.ArrayList; import java.util.ArrayList;
//import java.util.Arrays; import java.util.Arrays;
//import java.util.List; import java.util.List;
//
//import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
//import org.redisson.Redisson; import org.redisson.Redisson;
//import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
//import org.redisson.config.Config; import org.redisson.config.Config;
import org.redisson.spring.data.connection.RedissonConnectionFactory;
//import org.redisson.spring.data.connection.RedissonConnectionFactory; //import org.redisson.spring.data.connection.RedissonConnectionFactory;
////import org.redisson.spring.data.connection.RedissonConnectionFactory; import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfigureAfter;
//import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
//import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
//import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
//import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
//import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.boot.autoconfigure.data.redis.RedisProperties.Sentinel;
//import org.springframework.boot.autoconfigure.data.redis.RedisProperties.Sentinel; import org.springframework.boot.context.properties.EnableConfigurationProperties;
//import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import;
//import org.springframework.context.annotation.Import; import org.springframework.data.redis.connection.RedisConnectionFactory;
//import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisOperations;
//import org.springframework.data.redis.core.RedisOperations; import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.util.ReflectionUtils;
//import org.springframework.util.ReflectionUtils;
// /**
///** * 参考redisson-spring-boot-starter的RedissonAutoConfiguration,沿用redis配置,移除自定义配置文件解析配置
// * 参考redisson-spring-boot-starter的RedissonAutoConfiguration,沿用redis配置,移除自定义配置文件解析配置 *
// * * @author sr on 2020-05-26
// * @author sr on 2020-05-26 */
// */ @Configuration
//@Configuration @ConditionalOnClass({Redisson.class, RedisOperations.class})
//@ConditionalOnClass({Redisson.class, RedisOperations.class}) @AutoConfigureAfter({RedisAutoConfiguration.class})
//@AutoConfigureAfter({RedisAutoConfiguration.class}) @EnableConfigurationProperties({RedisProperties.class, RedissonProperties.class})
//@EnableConfigurationProperties({RedisProperties.class, RedissonProperties.class}) @Import({RedisAutoConfiguration.class})
//@Import({RedisAutoConfiguration.class}) public class RedissonConfig {
//public class RedissonConfig {
// @Autowired
// @Autowired private RedisProperties redisProperties;
// private RedisProperties redisProperties;
// @Autowired
// @Autowired private RedissonProperties redissonProperties;
// private RedissonProperties redissonProperties;
// @Bean
// @Bean @ConditionalOnMissingBean(name = "redisTemplate")
// @ConditionalOnMissingBean(name = "redisTemplate") public RedisTemplate<Object, Object> redisTemplate(
// public RedisTemplate<Object, Object> redisTemplate( RedisConnectionFactory redisConnectionFactory) {
// RedisConnectionFactory redisConnectionFactory) { RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
// RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>(); template.setConnectionFactory(redisConnectionFactory);
// template.setConnectionFactory(redisConnectionFactory); return template;
// return template; }
// }
// @Bean
// @Bean @ConditionalOnMissingBean(StringRedisTemplate.class)
// @ConditionalOnMissingBean(StringRedisTemplate.class) public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
// public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) { StringRedisTemplate template = new StringRedisTemplate();
// StringRedisTemplate template = new StringRedisTemplate(); template.setConnectionFactory(redisConnectionFactory);
// template.setConnectionFactory(redisConnectionFactory); return template;
// return template; }
// }
// @Bean
// @Bean @ConditionalOnMissingBean(RedisConnectionFactory.class)
// @ConditionalOnMissingBean(RedisConnectionFactory.class) public RedissonConnectionFactory redissonConnectionFactory(RedissonClient redisson) {
// public RedissonConnectionFactory redissonConnectionFactory(RedissonClient redisson) { return new RedissonConnectionFactory(redisson);
// return new RedissonConnectionFactory(redisson); }
// }
// @SuppressWarnings("unchecked")
// @SuppressWarnings("unchecked") @Bean(destroyMethod = "shutdown")
// @Bean(destroyMethod = "shutdown") @ConditionalOnMissingBean(RedissonClient.class)
// @ConditionalOnMissingBean(RedissonClient.class) public RedissonClient redisson() {
// public RedissonClient redisson() { Config config = null;
// Config config = null; Method clusterMethod = ReflectionUtils.findMethod(RedisProperties.class, "getCluster");
// Method clusterMethod = ReflectionUtils.findMethod(RedisProperties.class, "getCluster"); Method timeoutMethod = ReflectionUtils.findMethod(RedisProperties.class, "getTimeout");
// Method timeoutMethod = ReflectionUtils.findMethod(RedisProperties.class, "getTimeout"); Object timeoutValue = ReflectionUtils.invokeMethod(timeoutMethod, redisProperties);
// Object timeoutValue = ReflectionUtils.invokeMethod(timeoutMethod, redisProperties); int timeout;
// int timeout; if (null == timeoutValue) {
// if (null == timeoutValue) { timeout = 0;
// timeout = 0; } else if (!(timeoutValue instanceof Integer)) {
// } else if (!(timeoutValue instanceof Integer)) { Method millisMethod = ReflectionUtils.findMethod(timeoutValue.getClass(), "toMillis");
// Method millisMethod = ReflectionUtils.findMethod(timeoutValue.getClass(), "toMillis"); timeout = ((Long) ReflectionUtils.invokeMethod(millisMethod, timeoutValue)).intValue();
// timeout = ((Long) ReflectionUtils.invokeMethod(millisMethod, timeoutValue)).intValue(); } else {
// } else { timeout = (Integer) timeoutValue;
// timeout = (Integer) timeoutValue; }
// }
// // 修复不设置密码,传入空字符串,置为空
// // 修复不设置密码,传入空字符串,置为空 String password = redisProperties.getPassword();
// String password = redisProperties.getPassword(); password = StringUtils.isBlank(password) ? null : password;
// password = StringUtils.isBlank(password) ? null : password; if (redisProperties.getSentinel() != null) {
// if (redisProperties.getSentinel() != null) { Method nodesMethod = ReflectionUtils.findMethod(Sentinel.class, "getNodes");
// Method nodesMethod = ReflectionUtils.findMethod(Sentinel.class, "getNodes"); Object nodesValue = ReflectionUtils.invokeMethod(nodesMethod, redisProperties.getSentinel());
// Object nodesValue = ReflectionUtils.invokeMethod(nodesMethod, redisProperties.getSentinel());
// String[] nodes;
// String[] nodes; if (nodesValue instanceof String) {
// if (nodesValue instanceof String) { nodes = convert(Arrays.asList(((String) nodesValue).split(",")));
// nodes = convert(Arrays.asList(((String) nodesValue).split(","))); } else {
// } else { nodes = convert((List<String>) nodesValue);
// nodes = convert((List<String>) nodesValue); }
// }
// config = new Config();
// config = new Config(); config.useSentinelServers()
// config.useSentinelServers() .setPingConnectionInterval(redissonProperties.getPingConnectionInterval())
// .setPingConnectionInterval(redissonProperties.getPingConnectionInterval()) .setMasterName(redisProperties.getSentinel().getMaster())
// .setMasterName(redisProperties.getSentinel().getMaster()) .addSentinelAddress(nodes).setDatabase(redisProperties.getDatabase())
// .addSentinelAddress(nodes).setDatabase(redisProperties.getDatabase()) .setConnectTimeout(timeout).setPassword(password);
// .setConnectTimeout(timeout).setPassword(password); } else if (clusterMethod != null
// } else if (clusterMethod != null && ReflectionUtils.invokeMethod(clusterMethod, redisProperties) != null) {
// && ReflectionUtils.invokeMethod(clusterMethod, redisProperties) != null) { Object clusterObject = ReflectionUtils.invokeMethod(clusterMethod, redisProperties);
// Object clusterObject = ReflectionUtils.invokeMethod(clusterMethod, redisProperties); Method nodesMethod = ReflectionUtils.findMethod(clusterObject.getClass(), "getNodes");
// Method nodesMethod = ReflectionUtils.findMethod(clusterObject.getClass(), "getNodes"); List<String> nodesObject = (List<String>) ReflectionUtils.invokeMethod(nodesMethod, clusterObject);
// List<String> nodesObject = (List<String>) ReflectionUtils.invokeMethod(nodesMethod, clusterObject);
// String[] nodes = convert(nodesObject);
// String[] nodes = convert(nodesObject);
// config = new Config();
// config = new Config(); config.useClusterServers()
// config.useClusterServers() .setPingConnectionInterval(redissonProperties.getPingConnectionInterval())
// .setPingConnectionInterval(redissonProperties.getPingConnectionInterval()) .addNodeAddress(nodes).setConnectTimeout(timeout)
// .addNodeAddress(nodes).setConnectTimeout(timeout) .setPassword(password);
// .setPassword(password); } else {
// } else { config = new Config();
// config = new Config(); String prefix = "redis://";
// String prefix = "redis://"; Method method = ReflectionUtils.findMethod(RedisProperties.class, "isSsl");
// Method method = ReflectionUtils.findMethod(RedisProperties.class, "isSsl"); if (method != null && (Boolean) ReflectionUtils.invokeMethod(method, redisProperties)) {
// if (method != null && (Boolean) ReflectionUtils.invokeMethod(method, redisProperties)) { prefix = "rediss://";
// prefix = "rediss://"; }
// }
// config.useSingleServer()
// config.useSingleServer() .setPingConnectionInterval(redissonProperties.getPingConnectionInterval())
// .setPingConnectionInterval(redissonProperties.getPingConnectionInterval()) .setAddress(prefix + redisProperties.getHost() + ":" + redisProperties.getPort())
// .setAddress(prefix + redisProperties.getHost() + ":" + redisProperties.getPort()) .setConnectTimeout(timeout).setDatabase(redisProperties.getDatabase())
// .setConnectTimeout(timeout).setDatabase(redisProperties.getDatabase()) .setPassword(password);
// .setPassword(password); }
// } return Redisson.create(config);
// return Redisson.create(config); }
// }
// private String[] convert(List<String> nodesObject) {
// private String[] convert(List<String> nodesObject) { List<String> nodes = new ArrayList<String>(nodesObject.size());
// List<String> nodes = new ArrayList<String>(nodesObject.size()); for (String node : nodesObject) {
// for (String node : nodesObject) { if (!node.startsWith("redis://") && !node.startsWith("rediss://")) {
// if (!node.startsWith("redis://") && !node.startsWith("rediss://")) { nodes.add("redis://" + node);
// nodes.add("redis://" + node); } else {
// } else { nodes.add(node);
// nodes.add(node); }
// } }
// } return nodes.toArray(new String[nodes.size()]);
// return nodes.toArray(new String[nodes.size()]); }
// }
// @Bean
// @Bean public RedissonUtils redissonUtils() {
// public RedissonUtils redissonUtils() { return new RedissonUtils(redisson());
// return new RedissonUtils(redisson()); }
// }
// }
//}

View File

@@ -2,4 +2,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.senmesh.common.CommonConfiguration,\ com.senmesh.common.CommonConfiguration,\
com.senmesh.codegenerator.config.CodeConfiguration,\ com.senmesh.codegenerator.config.CodeConfiguration,\
com.senmesh.frame.redis.config.RedisCacheConfig,\ com.senmesh.frame.redis.config.RedisCacheConfig,\
com.senmesh.frame.redis.redisson.RedissonConfig,\
com.senmesh.mq.config.RabbitMqConfiguration com.senmesh.mq.config.RabbitMqConfiguration