是否可以在没有 Redis 的情况下使用 Spring Boot 会话?

问题描述 投票:0回答:4

查看 Spring Boot 文档,我只找到了使用 Redis 会话的示例,是否可以使用它without Redis?

spring spring-boot spring-session
4个回答
13
投票

如另一个答案所述:是的,您可以通过更改

SessionRepository
实现来更改会话持久性后端。

而且,Spring-Session 提供了一个内置的替代方案,即

MapSessionRepository
,您可以将会话保存在
Map
.

在 Spring Session 的示例中,有一个使用 Hazelcast 作为持久化后端的sample。它利用上述

MapSessionRepository
和由Hazelcast创建的
Map
实例。


6
投票

我知道我对这个问题有点晚了,但只是发帖以防其他人偶然发现这个问题。

从 Spring Session 1.2.0 开始,内置了一个 JDBC 会话存储库,可以像这样使用:

@Configuration
@EnableJdbcHttpSession // default session length and DB table name can be included on the annotation
public class SessionConfiguration {
    // code goes here if needed
}

在 Spring Session JAR 中,org.springframework.session.jdbc 包有 SQL 脚本来为许多不同的 DBMS(MySQL、Postgre 等)创建表结构

我在 Spring Session 1.2.0 里程碑版本中开始使用 JDBC 功能,一路上我没有遇到任何问题。


0
投票

您可以使用任何您想要存储会话的技术。 Spring Session 提供了接口

SessionRepository
,你必须实现它来存储和检索会话。因此,只需使用您的存储技术创建该接口的实现并将该实现配置为 Spring bean。


0
投票

将spring session存储在Redis、JDBC等中的思路是去掉存储在容器(如Tomcat)中的http session。当 http 会话存储在容器中时,在集群/云环境中的容器之间共享会话变得很麻烦。负载平衡可能无效。任何支持分布式、内存中、缓存等的 f/w 都可以考虑用于存储 spring session。

如果您的部署体系结构是多个容器一个数据库,请选择 jdbc,否则 redis 应该没问题。

Oracle 缓存框架参考 https://docs.oracle.com/cd/A97335_02/caching.102/a88706/ic_intro.htm

© www.soinside.com 2019 - 2024. All rights reserved.