将用户的session改为分布式session
分布式session理解
-
使用分布式session的原因:
后台服务器是分布式的(比如要负载均衡),在A服务器请求的的信息(如用户登录信息)存在A的session中,B服务器并不能识别到。 -
解决方法:共享存储,把用户请求的信息保存在A,B服务器都能找到的地方(如图所示)。
-
共享存储方案
- Redis(基于内存的K/V数据库) √ 此处选择redis,因为用户信息读取/登录及其频繁,Readis基于内存,读写性能很高。
- Mysql
- 文件服务器
实现session共享
-
安装Redis,可以按照官网操作,Redis官网
-
后端引入Redis依赖,能够操作redis
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.6.4</version> </dependency>
-
在yml文件中配置Redis
store-type:默认是null,表示存储在服务器;现改为redis,表示从redis读写session。# Redis 配置 redis: port: 6379 host: localhost database: 0 store-type: redis
-
可以使用QuickRedis工具来管理Redis:QuickRedis官网
-
把session写到Redis中 ,不用自己手写,引入spring-session和redis的整合,spring自动将session存储到redis中,并且从redis读。
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <version>2.6.3</version> </dependency>
-
测试验证