#redis-cluster集群
spring.redis.cluster.nodes=127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384,127.0.0.1:6385,127.0.0.1:6386
spring.redis.password=123456
spring.redis.lettuce.pool.max-active=100
spring.redis.lettuce.pool.max-idle=10
spring.redis.lettuce.pool.min-idle=5
#单节点配置
spring:
redis:
database: 0
host: 127.0.0.1
password: 123456
port: 6379
ssl: false
timeout: 20000
package com.xxpt.common.config; import org.apache.commons.lang3.StringUtils; import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.ClusterServersConfig; import org.redisson.config.Config; import org.redisson.config.SingleServerConfig; import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import java.util.List; import java.util.stream.Collectors; /** * redis配置(单节点、cluster集群模式同时适用) * @Author masl - 2023/3/20 下午11:53 */ @Configuration @EnableConfigurationProperties(RedisProperties.class) public class RedisConfig { /** * retemplate相关配置 * @param redisConnectionFactory * @return */ @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); //redisTemplate.setConnectionFactory(redisConnectionFactory(redisProperties)); redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.afterPropertiesSet(); return redisTemplate; } /** * redisson 配置 * @return */ @Bean public RedissonClient redissonClient(RedisProperties redisProperties) { Config config = new Config(); //集群模式配置 if (redisProperties.getCluster() != null) { List<String> nodes = redisProperties.getCluster().getNodes(); nodes = nodes.stream().map(node -> "redis://" + node).collect(Collectors.toList()); ClusterServersConfig clusterServersConfig = config.useClusterServers(); clusterServersConfig.addNodeAddress(nodes.toArray(new String[nodes.size()])); if (!StringUtils.isBlank(redisProperties.getPassword())) { clusterServersConfig.setPassword(redisProperties.getPassword()); } } else { //单节点配置 String address = "redis://" + redisProperties.getHost() + ":" + redisProperties.getPort(); SingleServerConfig serverConfig = config.useSingleServer(); serverConfig.setAddress(address); if (!StringUtils.isEmpty(redisProperties.getPassword())) { serverConfig.setPassword(redisProperties.getPassword()); } serverConfig.setDatabase(redisProperties.getDatabase()); } //看门狗的锁续期时间,默认30000ms,这里配置成15000ms config.setLockWatchdogTimeout(15000); return Redisson.create(config); } /*@Bean @Primary public LettuceConnectionFactory redisConnectionFactory(RedisProperties redisProperties) { RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(redisProperties.getCluster().getNodes()); ClusterTopologyRefreshOptions clusterTopologyRefreshOptions = ClusterTopologyRefreshOptions.builder() .enablePeriodicRefresh() .enableAllAdaptiveRefreshTriggers() .refreshPeriod(Duration.ofSeconds(5)) .build(); ClusterClientOptions clusterClientOptions = ClusterClientOptions.builder() .validateClusterNodeMembership(false) .topologyRefreshOptions(clusterTopologyRefreshOptions).build(); LettuceClientConfiguration lettuceClientConfiguration = LettuceClientConfiguration.builder() .readFrom(ReadFrom.REPLICA_PREFERRED) .clientOptions(clusterClientOptions).build(); if(StringUtils.isNotBlank(redisProperties.getPassword())) { redisClusterConfiguration.setPassword(redisProperties.getPassword()); } return new LettuceConnectionFactory(redisClusterConfiguration, lettuceClientConfiguration); }*/ }