Redis的多环境配置,实现多实例

本文介绍了如何在SpringBoot项目中配置多个Redis实例,以解决业务对Redis资源的竞争问题。通过修改redis配置文件启动不同端口的服务,并在`application.yml`中添加配置信息,利用`RedisAutoConfiguration`、`RedisConnectionConfiguration`和`RedisProperties`类进行环境配置。文中还提供了测试步骤,包括启动多个Redis服务并验证其运行状态。
摘要由CSDN通过智能技术生成

有时候我们可能会遇到这样的场景,有多个业务使用redis做缓存。其他业务比较占用资源。由于redis是单线程,所以会影响到主业务,这个时候我们就需要使用不同的redis的库。这个时候通过springboot+redis的多实例配置就可以实现。

Maven依赖

(1)本文使用的redis依赖如下

<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-redis</artifactId>
		<version>1.4.6.RELEASE</version>
	</dependency>

在application.yml中加入reids 的配置信息

spring:
  main-redis:
 #redis的地址
    host: localhost  
 #redis 的端口
    port: 6379
#redis 的连接超时时间(毫秒)
    timeout: 6000
#redis 的密码 默认为空
    password:
    pool:
#redis 连接池最大连接数
      max-active: 10
#redis 连接池最大空闲连接
      max-idle: 5
#redis 连接池最大阻塞等待时间
      max-wait: 2
#redis 连接池最小空闲连接数
      min-idle: 1
  lesser-redis:
      host: localhost
      port: 6333
      timeout: 6000
      password:
      pool:
         max-active: 10
         max-idle: 5
         max-wait: 2
         min-idle: 1

项目的目录结构如下:

在这里插入图片描述

这里主要提供了三个类进行不同环境的配置;

  1. RedisAutoConfiguration 自动配置
/**
 * @author kmz
 */
@Configuration
@EnableConfigurationProperties({RedisAutoConfiguration.MainRedisProperties.class,RedisAutoConfiguration.LesserRedisProperties.class})
public class RedisAutoConfiguration {

    /**
     * @Primary 注解告诉Spring遇到多个bean的时候,它为默认
     * prefix  告诉spring读取前缀为spring.main-redis的配置信息
     */
    @Primary
    @ConfigurationProperties(prefix = "spring.main-redis")
    public static class MainRedisProperties extends RedisProperties {
    }

    @ConfigurationProperties(prefix = "spring.lesser-redis")
    public static class LesserRedisProperties extends RedisProperties {
    }

    /**
     * 通过配置获取RedisConnectionFactory
     * @param mainRedisProperties  mainRedis的配置信息
     * @return
     */
    @Primary
    @Bean("mainRedisConnectionFactory")
    public static RedisConnectionFactory getMainRedisConnectionFactory(MainRedisProperties mainRedisProperties){
        RedisConnectionConfiguration factory = new RedisConnectionConfiguration(mainRedisProperties);

        return factory.redisConnectionFactory();
    }

    /**
     * 获取mainredis的StringRedisTemplate实例
     * @param redisConnectionFactory  使用@Qulifier指定需要的factory
     * @return  template
     */
    @Primary
    @Bean("mainStringRedisTemplate")
    public static StringRedisTemplate getMainStringRedisTemplate(
            @Qualifier(value = "mainRedisConnectionFactory") RedisConnectionFactory redisConnectionFactory
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值