springboot配置基于redis的session
springboot配置基于redis的session
-
为什么要使用session共享?
因为在多个服务器之间我准确认识同一客户端,以方便保存会话状态。
-
只有redis这一种方案吗?或者说基于redis的Session能有什么优势?
不是的,我们的目的是要让会话状态得以保存和准确识别,比如nginx基于hash来进行轮询,那每次会话都会到同样一台服务上,也可以保证会话状态。
而且,本质是我们把会话状态放入nosql数据库,每次从数据库中读取还原。基于redis方案比较成熟还有就是redis内存操作等其它优势,可以去redis官网了解。
通过redis来实现Session共享
-
引入必要的pom依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
-
编写必要的配置信息
# redis 配置 spring: redis: database: 0 cluster: max-redirects: 3 nodes: - 192.168.15.208:7001 - 192.168.15.208:7002 - 192.168.15.208:7003 - 192.168.15.208:7004 - 192.168.15.208:7005 - 192.168.15.208:7006 #password: 1234 lettuce: pool: max-active: 1000 max-wait: -1 max-idle: 10 min-idle: 5 timeout: 3000 data: redis: repositories: enabled: false
-
启动基于redis的session共享,在启动类上添加@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)
@SpringBootApplication @EnableCaching @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800) public class SaleWhiteBoardApplication { public static void main(String[] args) { SpringApplication.run(SaleWhiteBoardApplication.class, args); } }
maxInactiveIntervalInSeconds: 设置 Session 失效时间,使用 Spring Session 之后,原 Spring Boot 配置文件
application.yml
中的server.session.timeout
属性不再生效
作者:Ants_double
出处:https://www.cnblogs.com/ants_double/
本文版权归作者和博客园所有,欢迎转载。转载请在留言板处留言给我,且在文章标明原文链接,谢谢!
如果您觉得本篇博文对您有所收获,觉得我还算用心,请点击右下角的 [大拇指],谢谢!