Springboot关于Redis的配置失效(版本问题)

 背景:

前段时间使用redis时发现yaml配置中的redis相关配置不生效,后面发现将配置修改甚至删除所有相关redis的配置,springboot依然能使用redis里面默认的db0并且不报错。上网查阅了一些文章,但是都和我的情况不符。

直接说结论:

出现这个问题的原因是SpringBoot 2.x和 3.x 对于reids的配置不一样。之前我用的是3.x版本,后来修改了版本,却没有修改redis配置。还是因为粗心导致了这个问题

配置代码

业务代码:

//生成验证码
        String code = RandomCodeUtils.randomNumbers(6);
        // 存储验证码到reids
        stringRedisTemplate.opsForValue().set(LOGIN_CODE_KEY + recipient, code, LOGIN_CODE_TTL, TimeUnit.MINUTES);
        //todo 在这里发送代码
        return Result.success("邮件发送成功");

修改前配置(SpringBoot 3.x使用这种配置):

spring:
  data:
    redis:
      host: 127.0.0.1
      port: 6379
      database: 11
      password:
      jedis:
        pool:
          max-active: 8
          max-idle: 8
          min-idle: 2
          max-wait: 300ms

修改后yaml配置(SpringBoot 2.x使用这种配置):

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password:
    database: 11
    jedis:
        pool:
          max-active: 8
          max-idle: 8
          min-idle: 2
          max-wait: 300ms

运行后的效果

可以看到配置生效,使用的是db11

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,针对你的问题,你可以在yaml配置文件中添加两个redis配置,如下所示: ```yaml spring: redis: # 第一个redis配置 host: localhost port: 6379 password: 123456 database: 0 # 第二个redis配置 lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: -1ms cluster: nodes: 127.0.0.1:6379,127.0.0.1:6380 ``` 这里我们使用Spring Boot框架自带的`spring.redis`配置项来配置两个redis,其中第一个redis的`host`、`port`、`password`、`database`等参数可以根据实际情况进行配置,第二个redis则是使用了lettuce连接池和redis集群的配置方式,`nodes`参数中可以配置多个redis节点。 这样,在Java项目中你就可以通过`@Autowired`注解来注入两个`RedisTemplate`,并分别使用不同的`@Qualifier`注解来指定使用哪一个redis配置,如下所示: ```java @Autowired @Qualifier("redisTemplate1") private RedisTemplate<String, Object> redisTemplate1; @Autowired @Qualifier("redisTemplate2") private RedisTemplate<String, Object> redisTemplate2; ``` 其中`@Qualifier`注解中的参数需要与配置文件中配置的`RedisTemplate`的名称对应,如下所示: ```java @Bean(name="redisTemplate1") public RedisTemplate<String, Object> redisTemplate1(RedisConnectionFactory redisConnectionFactory){ RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); // 其他配置 return redisTemplate; } @Bean(name="redisTemplate2") public RedisTemplate<String, Object> redisTemplate2(RedisConnectionFactory redisConnectionFactory){ RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); // 其他配置 return redisTemplate; } ``` 这样就完成了Java项目中yaml配置两个redis的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值