使用 Spring Session 存储 HTTP 会话数据

已完成

在本单元中,了解如何使用 Azure Cache for Redis 通过 Spring Session 存储 HTTP 会话数据。

HTTP 会话

HTTP 会话用于存储请求之间的用户数据(通常是安全信息)。 HTTP 会话还可以存储应用程序状态,或缓存经常访问的用户数据。 由于 HTTP 会话存储在服务器上,因此它们可能会出现可伸缩性问题。 当应用程序横向扩展到更多节点时,需要复制会话。

在 Java 中,HTTP 会话自 servlet 早期就可用,JavaServer Faces (JSF) 等技术大量使用了这些会话。 缩放 HTTP 会话一直以来都是一大难题,并且所有主要 Java 应用程序服务器都存在会话复制机制。

HTTP 会话复制机制的一个问题是没有标准化,而是依赖特定于每个应用程序服务器的 API。 此设置可能会导致可移植性问题。

Spring Session

Spring Session 是一个 Spring 子项目,提供用于配置 HTTP 会话复制的通用解决方案。 Spring Session 支持将 Redis 作为多个后端选项之一。 Spring Session 将所有会话数据复制到 Redis 中,以便在应用程序横向扩展时,每个节点都可以访问这些用户会话。

Spring Session 配置类似于以前的 Spring Data 配置,并说明了另一个建议的 Redis 使用方案。

配合使用 Spring Session 和 Redis

某些配置与 Spring Data Redis 相同,对于这两个解决方案,只需执行一次。 与 Spring Data 配置中一样,通常使用 Spring Initializr 并执行以下主要任务:

  1. 将 Spring Session Redis 库添加到应用程序中。
  2. 配置 application.yml 文件以连接到 Azure Cache for Redis 实例。
  3. 使用 Java 的 HTTP 会话机制来存储和检索数据。

继续学习下一单元,以实现此配置。