分布式系统中,Session 共享有不少的解决方案,其中托管到缓存中应该是最经常使用的方案之一。redis
spring官方说明:spring
Spring Session 提供了一套建立和管理 Servlet HttpSession 的方案。Spring Session 提供了集群 Session(Clustered Sessions)功能,默认采用外置的 Redis 来存储 Session 数据,以此来解决 Session 共享的问题。缓存
<!-- 共享session设置 --> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
@Configuration @EnableRedisHttpSession(maxInactiveIntervalInSeconds=86400*30) //设置session失效时间 public class SessionConfig { }
maxInactiveIntervalInSeconds: 设置 Session 失效时间,使用 Redis Session 以后,原 Spring Boot 的 server.session.timeout 属性再也不生效。session
@RequestMapping(value = "/sessionId") public String sessionId(HttpSession session) { //session操做 String userName = (String) session.getAttribute("userName"); if (userName == null) { userName = "jiafeng"; } session.setAttribute("userName", userName); return session.getId(); }
执行请求以后发现页面获取的session和redis中存储的session一致,说明session已经归入redis管理。app
redis中存储session和session失效时间。分布式