前提条件:搭建好了redis哨兵集群模式
1. 在pom文件中引入redis的启动依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2. 在配置文件中配置sentinel的相关信息
spring:
redis:
sentinel:
master: mymaster
nodes:
- 127.0.0.1:27001
- 127.0.0.1:27001
- 127.0.0.1:27001
- mymaster对应了sentinel的配置文件中配置的主节点名字
- 这里面配置类所有的哨兵服务器地址
3. 配置类中添加以下配置
@Bean
public LettuceClientConfigurationBuilderCustomizer configurationBuilderCustomizer(){
return configBuilder -> configBuilder.readFrom(ReadFrom.REPLICA_PREFERRED);
}
这里的ReadFrom是配置Redis的读取策略,是一个枚举类,有以下选择
- MASTER:从主节点读取
- MASTER_PREFERRED:优先从master节点读取,master不可用才读取slave节点
- REPLICA:从slave节点读取
- REPLICA_PREFERRED:优先从slave节点读取,所有slave不可用才读取master(推荐)
至此,配置已经完成,再使用redisTemplate时读会从slave节点,写会从master节点