sa-token/sa-token-doc/plugin/alone-redis.md
AppleOfGray ad60f42546
update sa-token-doc/plugin/alone-redis.md.
RedisStandaloneConfiguration.setUsername()方法是这个spring-boot-starter-parent 2.4.0版本新增的, 群里有人提问相关问题, 还是加上版本限制的提示吧
2023-03-22 02:34:21 +00:00

169 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Sa-Token-Alone-Redis 独立Redis插件
---
Sa-Token默认的Redis集成方式会把权限数据和业务缓存放在一起但在部分场景下我们需要将他们彻底分离开来比如
> 搭建两个Redis服务器一个专门用来做业务缓存另一台专门存放Sa-Token权限数据
<button class="show-img" img-src="https://oss.dev33.cn/sa-token/doc/g/g3--alone-redis.gif">加载动态演示图</button>
要将Sa-Token的数据单独抽离出来很简单你只需要为Sa-Token单独配置一个Redis连接信息即可
---
### 1、首先引入Alone-Redis依赖
<!---------------------------- tabs:start ---------------------------->
<!-------- tab:Maven 方式 -------->
``` xml
<!-- Sa-Token插件权限缓存与业务缓存分离 -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-alone-redis</artifactId>
<version>${sa.top.version}</version>
</dependency>
```
<!-------- tab:Gradle 方式 -------->
``` gradle
// Sa-Token 整合 Redis (使用 jackson 序列化方式)
implementation 'cn.dev33:sa-token-alone-redis:${sa.top.version}'
```
<!---------------------------- tabs:end ---------------------------->
> 对应spring-boot-starter-parent版本必须大于等于2.4.0
> 如果必须使用2.4.0以下版本, 则须将SaToken降级到1.33.0版本及以下(无法使用aloneRedis的集群功能)
### 2、然后在application.yml中增加配置
<!---------------------------- tabs:start ---------------------------->
<!------------- tab:yaml 风格 ------------->
``` yaml
# Sa-Token 配置
sa-token:
# Token名称
token-name: satoken
# Token有效期
timeout: 2592000
# Token风格
token-style: uuid
# 配置 Sa-Token 单独使用的 Redis 连接
alone-redis:
# Redis数据库索引默认为0
database: 2
# Redis服务器地址
host: 127.0.0.1
# Redis服务器连接端口
port: 6379
# Redis服务器连接密码默认为空
password:
# 连接超时时间
timeout: 10s
spring:
# 配置业务使用的 Redis 连接
redis:
# Redis数据库索引默认为0
database: 0
# Redis服务器地址
host: 127.0.0.1
# Redis服务器连接端口
port: 6379
# Redis服务器连接密码默认为空
password:
# 连接超时时间
timeout: 10s
```
<!------------- tab:properties 风格 ------------->
``` properties
############## Sa-Token 配置 ##############
# Token名称
sa-token.token-name=satoken
# Token有效期
sa-token.timeout=2592000
# Token风格
sa-token.token-style=uuid
############## 配置 Sa-Token 单独使用的 Redis 连接 ##############
# Redis数据库索引默认为0
sa-token.alone-redis.database=2
# Redis服务器地址
sa-token.alone-redis.host=127.0.0.1
# Redis服务器连接端口
sa-token.alone-redis.port=6379
# Redis服务器连接密码默认为空
sa-token.alone-redis.password=
# 连接超时时间
sa-token.alone-redis.timeout=10s
############## 配置业务使用的 Redis 连接 ##############
# Redis数据库索引默认为0
spring.redis.database=0
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码默认为空
spring.redis.password=
# 连接超时时间
spring.redis.timeout=10s
```
<!---------------------------- tabs:end ---------------------------->
具体可参考示例:[码云application.yml](https://gitee.com/dromara/sa-token/blob/master/sa-token-demo/sa-token-demo-alone-redis/src/main/resources/application.yml)
集群配置说明: alone-redis同样可以配置集群(cluster模式和sentinel模式), 且基础配置参数和spring redis集群配置别无二致
集群配置示例可参考demo项目sa-token-demo-alone-redis-cluster
### 3、测试
新建Controller测试一下
``` java
@RestController
@RequestMapping("/test/")
public class TestController {
@Autowired
StringRedisTemplate stringRedisTemplate;
// 测试Sa-Token缓存
@RequestMapping("login")
public SaResult login(@RequestParam(defaultValue="10001") String id) {
System.out.println("--------------- 测试Sa-Token缓存");
StpUtil.login(id);
return SaResult.ok();
}
// 测试业务缓存
@RequestMapping("test")
public SaResult test() {
System.out.println("--------------- 测试业务缓存");
stringRedisTemplate.opsForValue().set("hello", "Hello World");
return SaResult.ok();
}
}
```
分别访问两个接口观察Redis中增加的数据
![alone-redis](https://oss.dev33.cn/sa-token/doc/alone-redis.png 's-w')
测试完毕!
### 4、注意点
目前 Sa-Token-Alone-Redis 仅对以下插件有 Redis 分离效果:
- sa-token-dao-redis
- sa-token-dao-redis-jackson
- sa-token-dao-redis-fastjson
- sa-token-dao-redis-fastjson2