Springboot整合Redis,同时支持Standalone和Cluster两种模式,自由切换

项目里用Redis存储,测试环境用的是cluster, 但只能内网访问,外网访问不了。所以需要开发时支持本机redis standalone,集成测试用cluster。
代码:
设置文件application.yml

spring:
  data:
    redis:
      mode: standalone #cluster, standalone(default)
      host: localhost
      port: 6379
      cluster:
        nodes:
          - 10.188.4.3:6379
          - 10.188.4.61:6379
          - 10.188.4.117:6379
        max-redirects: 3
      password: XcmG*Crm&0307
      timeout: 60s
      database: 1
      lettuce:
        pool:
          max-active: 10  # 允许最大连接数,默认8(负值表示没有限制)
          max-idle: 8     # 最大空闲连接数,默认8
          min-idle: 0     # 最小空闲连接数,默认0
          max-wait: 5s    # 连接用完时,新的请求等待时间(s秒、ms毫秒)

这里有一个设置:spring.data.redis.mode,用于切换不同的redis模式,当设置为standalone时,支持本地开发,设置为cluster时支持集群模式。

Springboot启动配置,集群模式:

@Slf4j
@Configuration
@ConditionalOnProperty(value = "spring.data.redis.mode", havingValue = "cluster", matchIfMissing = false)
public class RedisClusterConfig {
    @Bean
    public RedisClusterConfiguration redisClusterConfiguration(RedisProperties prop) {
        log.info("Redis in cluster mode: {}", prop.getCluster().getNodes());
        RedisClusterConfiguration conf = new RedisClusterConfiguration(prop.getCluster().getNodes());
        BeanUtils.copyProperties(prop, conf);
        conf.setMaxRedirects(prop.getCluster().getMaxRedirects());
        return conf;
    }

Standalone模式:

@Slf4j
@Configuration
@ConditionalOnProperty(value = "spring.data.redis.mode", havingValue = "standalone", matchIfMissing = true)
public class RedisStandaloneConfig {

    @Bean
    public RedisStandaloneConfiguration redisStandaloneConfiguration(RedisProperties prop) {
        log.info("Redis in standalone mode: {}:{}", prop.getHost(), prop.getPort());
        RedisStandaloneConfiguration conf = new RedisStandaloneConfiguration();
        BeanUtils.copyProperties(prop, conf);
        return conf;
    }
}

相关推荐

  1. Redis Cluster 为什么不支持传统的事务模型

    2024-04-26 19:34:06       27 阅读
  2. Golang:go-redis支持Redis ServerRedis Cluster的客户端

    2024-04-26 19:34:06       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 19:34:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 19:34:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 19:34:06       82 阅读
  4. Python语言-面向对象

    2024-04-26 19:34:06       91 阅读

热门阅读

  1. Docker备忘清单(三)

    2024-04-26 19:34:06       28 阅读
  2. vue3前端请求后端接口动态渲染菜单

    2024-04-26 19:34:06       29 阅读
  3. leetcode144--二叉树的前序遍历

    2024-04-26 19:34:06       29 阅读
  4. 使用Dokcer中的Mysql导入sql文件

    2024-04-26 19:34:06       29 阅读
  5. 银行卡四要素API接口的验证流程

    2024-04-26 19:34:06       39 阅读
  6. make命令

    2024-04-26 19:34:06       35 阅读
  7. 大华相机C#学习之IStream类

    2024-04-26 19:34:06       28 阅读
  8. mybatis - 取值符号:# 和 $的区别

    2024-04-26 19:34:06       39 阅读
  9. 【动态规划】Leetcode 322. 零钱兑换【中等】

    2024-04-26 19:34:06       25 阅读
  10. 代谢网络模型学习笔记(序章)

    2024-04-26 19:34:06       33 阅读