背景
正常情况下,我们前端一般会用nginx做负载均衡横向扩展,有时候我们会选择IP绑定负载均衡策略,但是很多情况下,我们每个节点可能资源不同,所以能够承受的用户访问量也不同,那么采用权重轮询的负载均衡策略可能会更加有效,这种情况下,我们的后台session就不能放在每个节点了,需要进行共享,我们可以放在数据库或者redis中,通常情况下我们会选择redis,下面介绍用SpringBoot整合spring session+redis。
整合spring session +redis
整合起来其实很简单,如下几步即可。
1、引入依赖
<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>
2、配置文件
spring:#redis集群redis:port: 6379host: 192.168.157.6password: 123456pool:max-active: 8max-wait: -1max-idle: 8min-idle: 0session:store-type: redis # Session store type.
如果是集群模式,则需要用集群模式的redis配置文件
spring:#redis集群redis:database: 0jedis:pool:max-active: 8max-wait: -1max-idle: 8min-idle: 0timeout: 10000cluster:nodes:- 127.0.0.1:6379session:store-type: redis # Session store type.
3、启动类加上注解
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600)@SpringBootApplicationpublic class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}}
设置3600s过期
测试
请求然后发现redis有如下key
spring:session:expirations:1617380520000spring:session:sessions:7f22b339-52d2-47dd-8538-64e1eecdbd36spring:session:sessions:expires:7f22b339-52d2-47dd-8538-64e1eecdbd36
并且客户端一直用的是同一个sessionid
完成!
