1、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.5.9</version>
</dependency>
<!-- 以下依赖都为非核心依赖,可根据自身需要选择 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.19</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
2、增加配置文件
spring:
redis:
database: 0
cluster:
nodes: 10.0.8.149:9001,10.0.8.149:9002,10.0.8.150:9003,10.0.8.150:9004,10.0.8.152:9005,10.0.8.152:9006
max-redirects: 3
password: redis123456
3、编写响应的java配置类
(1)、配置读取类
@Component
@ConfigurationProperties(prefix = "spring.redis.cluster")
@Data
public class RedisClusterPropertiesConfig {
//redis集群节点列表
private String nodes;
//最大尝试重连数
private Integer maxRedirects;
//最大尝试重连数
@Value("${spring.redis.password}")
private String password;
}
(2) redisClusterTemplate集群模板配置类
@Configuration
public class RedisClusterConfig {
@Resource
private RedisClusterPropertiesConfig redisClusterPropertiesConfig;
@Bean(name = "redisClusterTemplate")
public RedisTemplate<String, Serializable> redisTemplate() {
RedisTemplate<String, Serializable> template = new RedisTemplate<>();
final FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class);
template.setKeySerializer(fastJsonRedisSerializer);
template.setValueSerializer(fastJsonRedisSerializer);
template.setConnectionFactory(myLettuceConnectionFactory());
return template;
}
@Bean
public RedisConnectionFactory myLettuceConnectionFactory() {
Map<String, Object> source = new HashMap<String, Object>();
source.put("spring.redis.cluster.nodes", redisClusterPropertiesConfig.getNodes());
source.put("spring.redis.cluster.max-redirects", redisClusterPropertiesConfig.getMaxRedirects());
RedisClusterConfiguration redisClusterConfiguration;
redisClusterConfiguration = new RedisClusterConfiguration(new MapPropertySource("RedisClusterConfiguration", source));
redisClusterConfiguration.setPassword(redisClusterPropertiesConfig.getPassword());
return new LettuceConnectionFactory(redisClusterConfiguration);
}
}
4、编写测试类
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class RedisClusterTest {
@Autowired
@Qualifier("redisClusterTemplate")
private RedisTemplate redisClusterTemplate;
@Test
public void encryptPwd() {
String key=RandomUtil.randomString(6);
final int slotNum = CRC16.crc16(key.getBytes())%16384;;
redisClusterTemplate.opsForValue().set(RandomUtil.randomString(6), "Damein_xym");
log.info("执行成功key值{},插槽数:{}",key,slotNum);
}
}
5、测试结果