依赖版本
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);
}
}
};
}