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