[go: nahoru, domu]

Skip to content

Commit

Permalink
alone-redis添加集群模式
Browse files Browse the repository at this point in the history
  • Loading branch information
AppleOfGray committed Jan 6, 2023
1 parent 374cf70 commit 8015398
Showing 1 changed file with 32 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.*;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
Expand All @@ -22,6 +21,9 @@
import cn.dev33.satoken.dao.SaTokenDaoRedisFastjson2;
import cn.dev33.satoken.dao.SaTokenDaoRedisJackson;

import java.util.List;
import java.util.stream.Collectors;

/**
* 为 SaTokenDao 单独设置Redis连接信息
* @author kong
Expand Down Expand Up @@ -59,14 +61,33 @@ public void setEnvironment(Environment environment) {

// 获取cfg对象
RedisProperties cfg = Binder.get(environment).bind(ALONE_PREFIX, RedisProperties.class).get();

// 1. Redis配置
RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration();
redisConfig.setHostName(cfg.getHost());
redisConfig.setPort(cfg.getPort());
redisConfig.setDatabase(cfg.getDatabase());
redisConfig.setPassword(RedisPassword.of(cfg.getPassword()));


// 1. Redis配置
RedisConfiguration redisAloneConfig;
if (cfg.getCluster().getNodes().size() > 0) {
// 集群模式
RedisClusterConfiguration redisClusterConfig = new RedisClusterConfiguration();
redisClusterConfig.setUsername(cfg.getUsername());
redisClusterConfig.setPassword(cfg.getPassword());
RedisProperties.Cluster cluster = cfg.getCluster();
List<RedisNode> serverList = cluster.getNodes().stream().map(node -> {
String[] ipAndPort = node.split(":");
return new RedisNode(ipAndPort[0].trim(), Integer.parseInt(ipAndPort[1]));
}).collect(Collectors.toList());
redisClusterConfig.setClusterNodes(serverList);
redisClusterConfig.setMaxRedirects(cluster.getMaxRedirects());
redisAloneConfig = redisClusterConfig;
} else {
// 单体模式
RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration();
redisConfig.setHostName(cfg.getHost());
redisConfig.setPort(cfg.getPort());
redisConfig.setDatabase(cfg.getDatabase());
redisConfig.setPassword(RedisPassword.of(cfg.getPassword()));
redisConfig.setDatabase(cfg.getDatabase());
redisAloneConfig = redisConfig;
}

// 2. 连接池配置
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
// pool配置
Expand All @@ -93,7 +114,7 @@ public void setEnvironment(Environment environment) {
}
// 创建Factory对象
LettuceClientConfiguration clientConfig = builder.poolConfig(poolConfig).build();
LettuceConnectionFactory factory = new LettuceConnectionFactory(redisConfig, clientConfig);
LettuceConnectionFactory factory = new LettuceConnectionFactory(redisAloneConfig, clientConfig);
factory.afterPropertiesSet();

// 3. 开始初始化 SaTokenDao
Expand Down

0 comments on commit 8015398

Please sign in to comment.