sa-token-doc/plugin/alone-redisson.md
Sa-Token 默认的 Redisson 集成会把权限数据和业务缓存放在同一个 RedissonClient 上。需要彻底分离时,可再为 Sa-Token 单独起一个 Redisson 连接。
[!NOTE| label:业务场景] 搭建两个 Redis:一个给业务 RedissonClient,另一台专门存放 Sa-Token 权限数据。
引入 sa-token-alone-redisson 即可,无需再引入 sa-token-redisson 或 sa-token-redisson-spring-boot-starter(本插件已包含 Dao 实现并完成注册)。
业务代码如果也要用 RedissonClient:
redisson-spring-boot-starter,或自行注册 Bean。RedisAutoConfiguration,不要引入 redisson-spring-boot-starter,改为引入 redisson 并自行注册 Bean。sa-token-alone-redisson 本身无需 Boot 4 专用包。<!-- Sa-Token 插件:权限缓存与业务缓存分离(Redisson) -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-alone-redisson</artifactId>
<version>${sa.top.version}</version>
</dependency>
<!-- 业务 Redis(按需) -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>${redisson.version}</version>
</dependency>
implementation 'cn.dev33:sa-token-alone-redisson:${sa.top.version}'
// 业务 Redis(按需)
implementation 'org.redisson:redisson-spring-boot-starter:${redisson.version}'
配置项与官方 spring.redis.redisson.config / file 相同,单机用 singleServerConfig,集群用 clusterServersConfig。
sa-token:
token-name: satoken
timeout: 2592000
# Sa-Token 单独使用的 Redisson 连接
alone-redisson:
config: |
singleServerConfig:
address: "redis://127.0.0.1:6379"
database: 2
password: null
spring:
redis:
# 业务使用的 Redisson 连接
redisson:
config: |
singleServerConfig:
address: "redis://127.0.0.1:6379"
database: 0
password: null
sa-token:
alone-redisson:
config: |
clusterServersConfig:
nodeAddresses:
- "redis://127.0.0.1:3000"
- "redis://127.0.0.1:3001"
- "redis://127.0.0.1:3002"
password: null
# application.yml
sa-token:
alone-redisson:
file: classpath:sa-redisson.yml
src/main/resources/sa-redisson.yml 示例(单机):
singleServerConfig:
address: "redis://127.0.0.1:6379"
database: 2
password: null
集群则把内容换成上面「集群」页签里的 clusterServersConfig 即可。
config 与 file 二选一,同时配置时优先 config。
完整示例:
@RestController
@RequestMapping("/test/")
public class TestController {
@Autowired
RedissonClient redissonClient;
// 测试 Sa-Token 缓存 --- http://localhost:8084/test/login
@RequestMapping("login")
public SaResult login(@RequestParam(defaultValue="10001") String id) {
StpUtil.login(id);
return SaResult.ok();
}
// 测试业务缓存 --- http://localhost:8084/test/test
@RequestMapping("test")
public SaResult test() {
redissonClient.getBucket("hello").set("Hello World");
return SaResult.ok();
}
}
分别访问两个接口,观察两套 Redis 中增加的数据。
sa-token-redisson 或 sa-token-redisson-spring-boot-starter。RedissonClient 来自官方 redisson-spring-boot-starter 或你自己注册的 Bean,与 Sa-Token 使用的独立连接互不影响。Spring Boot 4 请自行注册,不要引入 3.45 的 starter。SaTokenDaoForRedisson 默认使用 StringCodec,与业务 RedissonClient 的全局 codec 无关。database。sentinelServersConfig),按 Redisson 配置文档 填写即可。