---
title: "Sa-Token Alone独立Redisson插件"
keywords: "Sa-Token,sa-token,satoken,Sa-Token文档,Alone独立Redisson插件,插件,Redis"
description: "Sa-Token Alone 独立 Redisson:为权限数据单独配置 RedissonClient,与业务缓存彻底分离。"
---
# Sa-Token-Alone-Redisson 独立 Redisson 插件
---
Sa-Token 默认的 Redisson 集成会把权限数据和业务缓存放在同一个 `RedissonClient` 上。需要彻底分离时,可再为 Sa-Token 单独起一个 Redisson 连接。
::: info 业务场景
搭建两个 Redis:一个给业务 RedissonClient,另一台专门存放 Sa-Token 权限数据。
:::
---
### 1、引入依赖
引入 `sa-token-alone-redisson` 即可,**无需再引入** `sa-token-redisson` 或 `sa-token-redisson-spring-boot-starter`(本插件已包含 Dao 实现并完成注册)。
业务代码如果也要用 `RedissonClient`:
- Spring Boot 2 / 3:可再引入官方 `redisson-spring-boot-starter`,或自行注册 Bean。
- Spring Boot 4:当前 Redisson 3.45 的 starter 仍引用已移除的 `RedisAutoConfiguration`,**不要引入** `redisson-spring-boot-starter`,改为引入 `redisson` 并自行注册 Bean。`sa-token-alone-redisson` 本身无需 Boot 4 专用包。
:::tabs
== Maven 方式
``` xml
cn.dev33
sa-token-alone-redisson
${sa.top.version}
org.redisson
redisson-spring-boot-starter
${redisson.version}
```
== Gradle 方式
``` gradle
implementation 'cn.dev33:sa-token-alone-redisson:${sa.top.version}'
// 业务 Redis(按需)
implementation 'org.redisson:redisson-spring-boot-starter:${redisson.version}'
```
:::
### 2、配置独立连接(Redisson 原生 yaml)
配置项与官方 `spring.redis.redisson.config` / `file` 相同,单机用 `singleServerConfig`,集群用 `clusterServersConfig`。
:::tabs
== 单机(内嵌 yaml)
``` yaml
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
```
== 集群(内嵌 yaml)
``` yaml
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
```
== 外置文件
``` yaml
# application.yml
sa-token:
alone-redisson:
file: classpath:sa-redisson.yml
```
`src/main/resources/sa-redisson.yml` 示例(单机):
``` yaml
singleServerConfig:
address: "redis://127.0.0.1:6379"
database: 2
password: null
```
集群则把内容换成上面「集群」页签里的 `clusterServersConfig` 即可。
:::
`config` 与 `file` 二选一,同时配置时优先 `config`。
完整示例:
- 单机:[sa-token-demo-alone-redisson](https://gitee.com/dromara/sa-token/blob/master/sa-token-demo/sa-token-demo-alone-redisson/src/main/resources/application.yml)
- 集群:[sa-token-demo-alone-redisson-cluster](https://gitee.com/dromara/sa-token/blob/master/sa-token-demo/sa-token-demo-alone-redisson-cluster/src/main/resources/application.yml)
- Spring Boot 3:[sa-token-demo-alone-redisson-sb3](https://gitee.com/dromara/sa-token/blob/master/sa-token-demo/sa-token-demo-alone-redisson-sb3/src/main/resources/application.yml)
- Spring Boot 4:[sa-token-demo-alone-redisson-sb4](https://gitee.com/dromara/sa-token/blob/master/sa-token-demo/sa-token-demo-alone-redisson-sb4/src/main/resources/application.yml)
### 3、测试
``` java
@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 中增加的数据。
### 4、注意点
- 引入本插件后,无需再引入 `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 无关。
- Redis Cluster 没有 database 索引,集群配置里不要写 `database`。
- 哨兵模式同样走 Redisson 原生 yaml(`sentinelServersConfig`),按 [Redisson 配置文档](https://github.com/redisson/redisson/wiki/2.-Configuration) 填写即可。