sa-token/sa-token-doc/doc/up/integ-redis.md
2021-09-09 02:37:40 +08:00

93 lines
2.9 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 集成 Redis
---
Sa-token默认将数据保存在内存中此模式读写速度最快且避免了序列化与反序列化带来的性能消耗但是此模式也有一些缺点比如
1. 重启后数据会丢失
2. 无法在分布式环境中共享数据
为此Sa-Token提供了扩展接口你可以轻松将会话数据存储在 `Redis`、`Memcached`等专业的缓存中间件中,
做到重启数据不丢失,而且保证分布式环境下多节点的会话一致性
以下是官方提供的Redis集成包
---
### 方式1. Sa-Token 整合 Redis 使用jdk默认序列化方式
``` xml
<!-- Sa-Token 整合 Redis 使用jdk默认序列化方式 -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis</artifactId>
<version>${sa.top.version}</version>
</dependency>
```
优点兼容性好缺点Session序列化后基本不可读对开发者来讲等同于乱码
### 方式2. Sa-Token 整合 Redis使用jackson序列化方式
``` xml
<!-- Sa-Token 整合 Redis 使用jackson序列化方式 -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis-jackson</artifactId>
<version>${sa.top.version}</version>
</dependency>
```
优点Session序列化后可读性强可灵活手动修改缺点兼容性稍差
### 集成Redis请注意
**1. 无论使用哪种序列化方式你都必须为项目提供一个Redis实例化方案例如**
``` xml
<!-- 提供Redis连接池 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
```
**2. 引入了依赖我还需要为Redis配置连接信息吗** <br>
需要只有项目初始化了正确的Redis实例`Sa-Token`才可以使用Redis进行数据持久化参考以下`yml配置`
``` java
# 端口
spring:
# redis配置
redis:
# Redis数据库索引默认为0
database: 1
# Redis服务器地址
host: 127.0.0.1
# Redis服务器连接端口
port: 6379
# Redis服务器连接密码默认为空
# password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池最大连接数
max-active: 200
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 连接池中的最大空闲连接
max-idle: 10
# 连接池中的最小空闲连接
min-idle: 0
```
**3. 集成Redis后是我额外手动保存数据还是框架自动保存** <br>
框架自动保存。集成`Redis`只需要引入对应的`pom依赖`即可框架所有上层API保持不变
**4. 集成包版本问题** <br>
Sa-Token-Redis 集成包的版本尽量与 Sa-Token-Starter 集成包的版本一致,否则可能出现兼容性问题
<br><br>
更多框架的集成方案正在更新中...