redisson 连接 redis5报错 ERR wrong number of arguments for ‘auth‘ command

依赖版本

org.redisson:redisson-spring-boot-starter:3.25.2

现象

启动报错

org.redisson.client.RedisException: ERR wrong number of arguments for ‘auth’ command. channel: [xxx] command: (AUTH), params: (password masked)

原因

redis6以下版本认证参数不包含用户名,如果参数包含用户名密码两个,则会报参数数量错误异常

yml配置文件不能配置spring.data.redis.username项目,即使配置为null或者~也不行,会被解析为空字符串作为认证参数传输

解决

如果需要使用如下配置通过环境变量注入属性,又需要兼容redis6以下版本,可以通过RedissonAutoConfigurationCustomizer实现

spring:  
  data:  
    redis:  
      password: ${REDIS_PWD}
      username: ${REDIS_USER:} # 不能配置此项

RedissonAutoConfigurationCustomizer

@Bean  
RedissonAutoConfigurationCustomizer redissonAutoConfigurationCustomizer(RedisProperties redisProperties) {  
    return config -> {  
        if (StringUtils.isBlank(redisProperties.getUsername())) {  
            if (config.isClusterConfig()) {  
                config.useClusterServers().setUsername(null);  
            } else if (config.isSentinelConfig()) {  
                config.useSentinelServers().setUsername(null);  
            } else if (config.isSingleConfig()) {  
                config.useSingleServer().setUsername(null);  
            }  
        }  
    };  
}

你可能感兴趣的:(spring,spring,boot,后端,redis)