前言
在日常Web项目开发中,通过Session在服务器端记录用户状态或者其他重要数据是非常常见的操作。对于单机应用使用Session是没有问题的,但是对于集群环境,由于在将请求分配到另一台服务器时,新的服务器无法通过浏览器传入的Cookie值取到Session。所以导致所有基于Session的操作都会失败。
今天我们通过搭建一个非常简易的集群环境,实现在集群环境中解决使用Seesion存在的问题,并通过Redis进行Session共享来解决Session共享问题
问题重现
我们搭建一个测试环境,来说明一下上述问题
- 功能描述
搭建一个项目,提供两个接口,实现session的存储及读取
接口 | 功能描述 |
---|---|
/set | 在session中指定port属性的值 |
/get | 获取之前在session中设置的port的属性值 |
- 代码实现
@RestController
public class SessionController {
@Value("${server.port}")
private String port;
/**
* @Description 共享session置值
*/
@GetMapping("/set")
public String setSession(HttpSession session){
session.setAttribute("server:port:",port);
return port;
}
/**
* @Description 共享session取值
*/