如何配置Spring Boot通过Lettuce使用用户名密码连接Redis?
Spring Boot Lettuce 连接带用户名密码的Redis配置方案
本方案适配Redis 6.0及以上版本的ACL用户认证逻辑,根据你使用的Spring Boot版本选择对应配置方式即可。
Spring Boot 2.4及以上版本(推荐)
该版本起spring-boot-starter-data-redis默认提供spring.redis.username原生配置项,无需额外自定义代码,直接在配置文件中添加参数即可:
application.yml 示例
spring: redis: host: 你的Redis服务地址 port: 6379 username: 你的只读用户名 password: 你的只读用户密码 database: 0 # 按需指定数据库序号 # lettuce连接池配置保持不变 lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: -1ms
application.properties 示例
spring.redis.host=你的Redis服务地址 spring.redis.port=6379 spring.redis.username=你的只读用户名 spring.redis.password=你的只读用户密码 spring.redis.database=0 spring.redis.lettuce.pool.max-active=8 spring.redis.lettuce.pool.max-idle=8 spring.redis.lettuce.pool.min-idle=0 spring.redis.lettuce.pool.max-wait=-1ms
配置完成后直接注入RedisTemplate或StringRedisTemplate即可使用,所有操作会继承只读用户的权限,写操作会被Redis服务端直接拒绝。
低于Spring Boot 2.4版本的配置方式
该版本没有原生的用户名配置项,可选择以下两种方式之一配置:
方式1:通过Redis URI直接配置
在配置文件中直接填写带认证信息的Redis URI即可:
spring: redis: # URI格式:redis://用户名:密码@服务地址:端口/数据库序号 url: redis://readonly_user:your_pass@127.0.0.1:6379/0 lettuce: pool: max-active: 8
注意:如果用户名或密码包含特殊字符,需要先做URL编码后再填入URI中。
方式2:自定义Lettuce连接工厂Bean
手动创建Redis配置类,显式指定用户名和密码:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisStandaloneConfiguration; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; @Configuration public class RedisCustomConfig { @Bean public LettuceConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(); config.setHostName("你的Redis服务地址"); config.setPort(6379); config.setUsername("你的只读用户名"); config.setPassword("你的只读用户密码"); config.setDatabase(0); return new LettuceConnectionFactory(config); } }
如果是Redis集群或哨兵模式,将RedisStandaloneConfiguration替换为对应的RedisClusterConfiguration、RedisSentinelConfiguration即可,两个配置类同样支持setUsername和setPassword方法。
配置验证
可以注入StringRedisTemplate尝试执行写操作opsForValue().set("testKey", "testValue"),如果返回权限错误提示,说明只读用户的认证配置已经生效。
内容的提问来源于stack exchange,提问作者Lalitkumar.annaldas
相关产品推荐
相关产品推荐

