简介
现在随着分布式,微服务架构的日益成熟,越来越多的企业将传统的单体服务改造为微服务或是分布式架构,在分布式中就遇到session管理的问题,微服务架构中一个服务为了实现高可用至少要布署两台机器,这样就遇到一个问题,就是这个部署在不同服务器上的三个点如何实现session共享。spring提供了分布式session共享集成方案,主要是原理是将session信息存储于redis中,从而实现所有的节点共享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>
配置
在application.yml
文件中添加redis
,session
相关的配置项
spring:
redis: # 配置REDIS 信息
host: 127.0.0.1 # 配置 redis host
port: 6379 # 配置 redis 端口
lettuce: # 配置 lettuce 连接池
pool:
max-active: 10 # 最大连接数
max-idle: 10 # 连接池最大空闲连接
min-idle: 4 # 连接池最小空闲连接
session:
store-type: redis # 存储使用redis
timeout: 3600s
在启动类中添加@EnableRedisHttpSession
标注开启session
@SpringBootApplication
@EnableRedisHttpSession //主类开启EnableRedisHttpSession注解
public class SessiondemoApplication {
public static void main(String[] args) {
SpringApplication.run(SessiondemoApplication.class, args);
}
}
测试
新建SessionController类,进行设置与获取Session信息,如下:
@RestController
@RequestMapping("/session")
public class SessionController {
@GetMapping("set")
public String set(HttpServletRequest request){
request.getSession().setAttribute("message", "123456");
return "success";
}
@GetMapping("get")
public String get(HttpServletRequest request){
return (String) request.getSession().getAttribute("message");
}
}
原创文章,作者:jiafegn,如若转载,请注明出处:https://www.techlearn.cn/archives/629