Spring Boot配置Redis主从复制

Spring Boot不直接支持主从Redis配置,而是原生的槽模式集群。通过自定义方式,如使用docker搭建主从集群,利用StringRedisTemplate进行操作。配置时需指定master和slave,确保配置变更后调用afterPropertiesSet()使设置生效。工具类中区分master写入,slave读取。
摘要由CSDN通过智能技术生成

先说结论,Spring Boot是不能直接通过application配置来实现主从Redis的配置的。Spring Boot支持的cluster是原始的使用槽的集群模式,而不是常用的主从集群,因此最好自己来搭建Redis的主从集群模式。

需要我们通过自己定义的方式来实现。

这里我们用docker来搭建redis集群,详细的docker-file如下:

version: "2.0"

services:
  master:
    image: redis
    restart: always
    container_name: master
    ports:
      - "6379:6379"
  slave1:
    image: redis
    command: redis-server --slaveof master 6379
    container_name: slave1
    depends_on:
      - master
    ports:
      - "6380:6379"
    links:
      - master:master
  slave2:
    image: redis
    command: redis-server --slaveof master 6379
    container_name: slave2
    depends_on:
      - master
    ports:
      - "6381:6379"
    links:
      - master:master

这里我们指定了一个master和2个slave,实际只需要使用一个slave即可

由于Redis操作的大部分是String类型的,因此我们可以直接使用Spring中的StringRedisTemplate这个类进行使用。

而这个类在Spring源码中的默认注入方法为

@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
@Import({
    LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })
public class RedisAutoConfiguration {
   

	@Bean
	@ConditionalOnMissingBean(name = "redisTemplate")
	public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
			throws UnknownHostException {
   
		RedisTemplate<Object, Object> template = new RedisTemplate<>();
		template.setConnectionFactory(redisConnectionFactory);
		return template;
	}

	@Bean
    // 只有当没有注入时才会使用这个类
	@ConditionalOnMissingBean
	public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory)
			throws UnknownHostException {
   
		StringRedisTemplate template = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值