Redission3.11能连接Redis6+的吗,怎么连接
Redisson 3.11 能连接 Redis 6+,但需注意 Redis 6 的 ACL 用户名+密码认证需特殊配置(Redisson 3.11 对 ACL 的支持是基础兼容,需确保连接参数格式正确)。以下是两种认证模式的连接方案:
一、场景 1:Redis 6+ 用「传统密码认证」(仅 requirepass
,无用户名)
如果 Redis 6+ 未启用 ACL(仅通过 requirepass
设置全局密码),连接方式与 Redis 5 一致:
1. 配置 Redisson(Java 代码)
Config config = new Config();
config.useSingleServer().setAddress("redis://192.168.6.181:6379") // Redis 地址(格式:redis://主机:端口).setPassword("your_redis_password") // Redis 的 requirepass 密码.setDatabase(12) // 要连接的数据库(与 Redis 配置一致).setTimeout(5000); // 连接超时时间(毫秒)RedissonClient redisson = Redisson.create(config);
2. 验证 Redis 服务端配置
登录 Redis 客户端,执行 CONFIG GET requirepass
,确保返回的密码与 setPassword
中配置的一致。
二、场景 2:Redis 6+ 用「ACL 用户名+密码认证」(推荐)
如果 Redis 6+ 启用了 ACL(通过 ACL SETUSER
创建了独立用户),需在连接地址中嵌入「用户名:密码」:
1. 配置 Redisson(Java 代码)
Config config = new Config();
// 地址格式:redis://[用户名]:[密码]@[主机]:[端口]
String address = "redis://admin:testadmin@192.168.6.181:6379"; config.useSingleServer().setAddress(address) .setDatabase(12) // 要连接的数据库(需确保用户有访问权限).setTimeout(5000); // 连接超时时间RedissonClient redisson = Redisson.create(config);
2. 验证 Redis 服务端 ACL 用户配置
登录 Redis 客户端,执行 ACL GETUSER admin
(假设用户名为 admin
),确保:
- 用户状态为
on
(已启用); - 密码与配置一致(
>Hbis332211
); - 有权限访问目标数据库(如
~12
或~*
)。
三、关键注意事项
-
版本兼容性细节:
Redisson 3.11 对 Redis 6 的 ACL 支持是“基础兼容”,但部分新特性(如 Redis 6.2+ 的ACL LOG
命令)可能无法使用。若需完整支持 Redis 6+,建议升级 Redisson 到 3.16+。 -
地址格式必须严格:
- 传统密码认证:地址为
redis://主机:端口
,密码通过setPassword
单独设置; - ACL 认证:地址为
redis://用户名:密码@主机:端口
,无需再调用setPassword
(否则会重复认证)。
- 传统密码认证:地址为
-
数据库权限:
若使用 ACL 用户,需确保用户有权限访问setDatabase
指定的数据库(通过ACL SETUSER
配置~数据库编号
)。
四、连接测试
连接后,可通过以下代码测试 Redisson 是否正常工作:
// 测试设置一个字符串
RBucket<String> bucket = redisson.getBucket("test_key");
bucket.set("hello redis", 10, TimeUnit.SECONDS);// 测试获取
String value = bucket.get();
System.out.println("获取到值: " + value); // 应输出 "hello redis"
按上述配置后,Redisson 3.11 即可稳定连接 Redis 6+。若仍有问题,可开启 Redisson 日志(org.redisson
设为 DEBUG
),查看连接过程的详细错误~