首页 > 解决方案 > 使用外部 tomcat 容器进行春季启动的 Redis 会话的最佳用法是什么

问题描述

伙计们。

我正在使用带有 tomcat 容器的 Spring Boot 框架,并且由于维护此服务的几个原因,我尝试与 Redis 共享会话。通常,我使用按照指南推荐的 spring-session-data-redis。

https://www.baeldung.com/spring-session

但是,我有一个关于使用 spring-session-data-redis 与 Redis 共享会话的问题。如果我需要设置和使用多个服务器集群来减少流量压力(使用负载均衡器),我是否还应该设置 Tomcat 配置以使用 Redis 会话?还是 spring-session-data-redis 足以为多个服务器集群进行会话共享?

如果有人访问了特定域中的错误子路径(例如somewheredomain.com/not_spring_project/some_path),我想spring session 无法共享会话。如果这个人用正确的路径访问了 A-tomcat 服务器,然后用错误的路径访问了另一个 tomcat 服务器,那么这个人第一次访问的另一个 tomcat 服务器可能会生成(或重写)jsessionid。

有没有人能够用外部 tomcat 容器解释 Spring Boot 的最佳使用会话共享?

标签: javaspringspring-boottomcatredis

解决方案


有一段时间我努力寻找这个问题的答案。在谷歌云平台上用多台虚拟机做试验台后,终于得到了答案。

答案很简单,Spring-session 的 session key 不是 jsession_id :P 所以,开发者不用担心多个 tomcat 服务器会发出新的 jsession_id。

只是开发者需要将 spring-session-data 与 redis 一起使用,然后他们可以在 redis 服务器上共享 session 数据。


推荐阅读