springboot使用Lettuce配置多数据源(单实例-集群-哨兵)

本文介绍如何在Springboot应用中集成多种Redis数据源,包括单实例、集群和哨兵模式。通过提供POM配置、YML配置和Java配置代码示例,详细展示了实现多数据源的步骤,为应对不同数量和类型的Redis实例提供了灵活的解决方案。
摘要由CSDN通过智能技术生成

在同一个应用中可能会同时用到多个redis数据源,并且这多个redis数据源可能模式还不一样,有单实例、集群、哨兵。

本文章就把这3种模式的redis数据源都集成到一个应用种。

那么就可以应付其他各种情况,例如,2个单实例3个集群4个哨兵等等。

只上干货:

 

pom

<dependency>
		   <groupId>org.apache.commons</groupId>
		   <artifactId>commons-pool2</artifactId>
		</dependency>
<!-- redis-->
        <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
		</dependency>

yml:

spring:  
  application: 
    name: two
  #默认用集群配置,3主3从共6节点的集群
  redis:
    timeout: 6000ms
    database: 10 
#    host: localhost #单实例redis用这个配置
#    password: #单实例redis用这个配置
    port: 6379 #单实例redis用这个配置
    password: Redis@123
    cluster: #集群用这个配置
      nodes:
        - 127.0.0.1:7011
        - 127.0.0.1:7012
        - 127.0.0.1:7013
        - 127.0.0.1:7014
        - 127.0.0.1:7015
        - 127.0.0.1:7016
      max-redirects: 2 #获取失败 最大重定向次数
    lettuce:
      pool: 
        max-active: 1000 #连接池最大连接数(使用负值表示没有限制)
        max-idle: 10 #连接池中的最大空闲连接
        min-idle: 3 #连接池中的最小空闲连接
        max-wait: -1 #连接池最大阻塞等待时间(使用负值表示没有限制)
  #redis单实例。单实例比较简单,ip,端口,密码,连接池就ok
  redis2:
    timeout: 6000ms
    database: 0 
    host: localhost #单实例redis用这个配置
    password: #单实例redis用这个配置
    port: 6379 #单实例redis用这个配置
    lettuce:
      pool: 
        max-active: 1000 #连接池最大连接数(使用负值表示没有限制)
        max-idle: 10 #连接池中的最大空闲连接
        min-idle: 3 #连接池中的最小空闲连接
        max-wait: -1 #连接池最大阻塞等待时间(使用负值表示没有限制)
  #redis哨兵.一主2从192.168.10.1:6379,192.168.10.2:6379,192.168.10.3:6379。三哨兵192.168.10.1:26379,192.168.10.2:26379,192.168.10.3:26379
  redis3:
    timeout: 6000ms
    database: 0 
    host: 192.168.10.1 #主节点的master
    password: ha@123 #redis密码
    port: 6379 #主节点的master端口
    lettuce:
      pool: 
        max-active: 1000 #连接池最大连接数(使用负值表示没有限制)
        max-idle: 10 #连接池中的最大空闲连接
        min-idle: 3 #连接池中的最小空闲连接
        max-wait: -1 #连接池最大阻塞等待时间(使用负值表示没有限制)
    sentinel: 
      master: mymaster 
      nodes: 
        - 192.168.10.1:26379
        - 192.168.10.2:26379
        - 192.168.10.3:26379

 

java配置:

需要3个读取yml的配置类,分别对应集群redis,单实例redis,哨兵redis。

package com.example.two.config.redis;

import java.util.List;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;

import lombok.Data;

/**
 * 映射redis的集群配置
 * yml:

  #默认用集群配置,3主3从共6节点的集群
spring: 
  redis:
    timeout: 6000ms
    database: 10 
    port: 6379 #单实例redis用这个配置
    password: Redis@123
    cluster: #集群用这个配置
      nodes:
        - 127.0.0.1:7011
        - 127.0.0.1:7012
        - 127.0.0.1:7013
        - 127.0.0.1:7014
        - 127.0.0.1:7015
        - 127.0.0.1:7016
      max-redirects: 2 #获取失败 最大重定向次数
    lettuce:
      pool: 
        max-active: 1000 #连接池最大连接数(使用负值表示没有限制)
        max-idle: 10 #连接池中的最大空闲连接
        min-idle: 3 #连接池中的最小空闲连接
        max-wait: -1 #连接池最大阻塞等待时间(使用负值表示没有限制) 
        
 * @author lsy
 *
 */
//@Data
@ConfigurationProperties(prefix="spring.redis.cluster")
public class RedisConfigOne {

    @Value("${spring.redis.host:127.0.0.1}")
    private String host;
    @Value("${spring.redis.port:6379}")
    private int port;
    @Value("${spring.redis.password:redis123}")
    private String password;
    @Value("${spring.redis.timeout:6000}")
    private int timeout;
    @Value("${spring.redis.database:0}")
    private int database;
    
    //pool映射
    @Value("${spring.redis.lettuce.pool.max-active}")
    private int maxActive;
    @Value("${spring.redis.lettuce.pool.max-idle}")
    private int maxIdle;
    @Value("${spring.redis.lettuce.pool.min-idle}")
    private int minIdle;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值