前言
微服务时代下,很多的传统项目开始转型。那么一定会面临一个问题,微服务下的session如何管理?传统项目下,我们的session完全由服务端管理,session存在服务端的内存中,不存在共享的问题。但是微服务模式下,所有服务分散在天南海北,传统方式显然解决不了共享问题,然而spring为我们提供了完美的解决方案:spring-session
spring-session
spring-session支持我们将session信息持久化存储,用户认证中心(认证子服务整合spring-session)后将session存在数据库(一般是redis)中,需要使用session的子服务同样整合spring-session便可取出session使用。
整合
spring-session的整合及其简单
依赖
<!-- spring session -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
配置
yml文件增加配置:
spring:
session:
store-type: redis
redis:
database: 0
host: localhost
port: 6379
password:
store-type即存储介质,支持如图选项
一般我们都是使用redis,其高速缓存和有效期的机制与session天然契合
然后。。就整合完了,存储使用session的方法依旧
request.getSession().setAttribute("xxx", "xxx");
request.getSession().getAttribute("xxx");
如此,令人头疼的session共享问题轻松解决,无需修改任何代码,spring-session天下第一!!!
有效期配置
有效期通过
spring:
session:
timeout: 600
属性配置,单位ms
验证
- 登录redis
./redis-cli
- 认证存储session
- 查看session
keys *
- 可以看到session信息以spring.session打头的key存储,规则应该可以通过配置修改(一般也没必要改)
- 查看session有效期
ttl
- 完美!