1.定制RedisTemplate访问哨兵集群模式
前提条件:搭建好了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节点
2. 定制RedisTemplate访问分片集群模式
前提条件:已经搭建好了redis分片集群环境
1. 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2. 配置文件配置分片集群地址
spring:
redis:
cluster:
nodes: # 指定分片集群中的每个节点信息
- 127.0.0.1:7:7001
- 127.0.0.1:7:7002
- 127.0.0.1:7:7003
- 127.0.0.1:7:8001
- 127.0.0.1:7:8002
- 127.0.0.1:7:8003
3. 配置类中配置读写分离
@Bean
public LettuceClientConfigurationBuilderCustomizer configurationBuilderCustomizer(){
return configBuilder -> configBuilder.readFrom(ReadFrom.REPLICA_PREFERRED);
}