个人随笔
目录
十二、SpringBoot整合spring session +redis
2021-04-02 23:36:35

背景

正常情况下,我们前端一般会用nginx做负载均衡横向扩展,有时候我们会选择IP绑定负载均衡策略,但是很多情况下,我们每个节点可能资源不同,所以能够承受的用户访问量也不同,那么采用权重轮询的负载均衡策略可能会更加有效,这种情况下,我们的后台session就不能放在每个节点了,需要进行共享,我们可以放在数据库或者redis中,通常情况下我们会选择redis,下面介绍用SpringBoot整合spring session+redis。

整合spring session +redis

整合起来其实很简单,如下几步即可。

1、引入依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-redis</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.session</groupId>
  7. <artifactId>spring-session-data-redis</artifactId>
  8. </dependency>

2、配置文件

  1. spring:
  2. #redis集群
  3. redis:
  4. port: 6379
  5. host: 192.168.157.6
  6. password: 123456
  7. pool:
  8. max-active: 8
  9. max-wait: -1
  10. max-idle: 8
  11. min-idle: 0
  12. session:
  13. store-type: redis # Session store type.

如果是集群模式,则需要用集群模式的redis配置文件

  1. spring:
  2. #redis集群
  3. redis:
  4. database: 0
  5. jedis:
  6. pool:
  7. max-active: 8
  8. max-wait: -1
  9. max-idle: 8
  10. min-idle: 0
  11. timeout: 10000
  12. cluster:
  13. nodes:
  14. - 127.0.0.1:6379
  15. session:
  16. store-type: redis # Session store type.

3、启动类加上注解

  1. @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600)
  2. @SpringBootApplication
  3. public class App {
  4. public static void main(String[] args) {
  5. SpringApplication.run(App.class, args);
  6. }
  7. }

设置3600s过期

测试

请求然后发现redis有如下key

  1. spring:session:expirations:1617380520000
  2. spring:session:sessions:7f22b339-52d2-47dd-8538-64e1eecdbd36
  3. spring:session:sessions:expires:7f22b339-52d2-47dd-8538-64e1eecdbd36

并且客户端一直用的是同一个sessionid

完成!

 208

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号