最近,我们开始使用spring redis会话作为会话管理器。 在过去的8到10个月中,我们的应用已在生产中运行。有一个使用此后端的移动应用程序。
当我将会话存储库更改为Spring Session时,移动应用程序中所有现有的已登录用户将自动注销。然后,他们将不得不再次登录。
总有没有将所有现有的登录用户会话迁移到Redis实例。
答案 0 :(得分:0)
如果我正确理解,那么实时迁移现有连接的答案是否定的,因为您要更改后端连接。任何新用户都需要使用新的连接类实例化与应用程序的连接。根据我们在此讨论的用户数量,可能允许当前连接的用户在httpsession上运行,而所有新连接在spring redis会话之外运行。映射所有现有的已连接用户以使其停留在httpsession上,直到他们的连接耗尽或断开连接,并进行拆分,以便新用户使用redis会话应用服务器,将涉及到工作。
如果不是上述情况,并且您正在寻找使用Spring Redis Session的指南,则:
首先,您将需要具有数据redis的spring会话模块,可以在这里找到: https://github.com/spring-projects/spring-session
然后,您需要添加以下Spring配置:
@EnableRedisHttpSession
public class Config {
@Bean
public LettuceConnectionFactory connectionFactory() {
return new LettuceConnectionFactory();
}
}
@EnableRedisHttpSession批注创建一个名称为springSessionRepositoryFilter的Spring Bean,它实现了Filter。该过滤器负责替换Spring Session支持的HttpSession实现。在这种情况下,Spring Session由Redis支持。 我们创建一个RedisConnectionFactory,将Spring Session连接到Redis Server。我们将连接配置为在默认端口(6379)上连接到localhost。有关配置Spring Data Redis的更多信息,请参阅参考文档。
然后创建一个redis连接工厂:
class AppConfig {
@Bean
public LettuceConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory(new RedisStandaloneConfiguration("server", 6379));
}
}
来源: https://docs.spring.io/spring-session/docs/current-SNAPSHOT/reference/html5/#httpsession-redis
https://docs.spring.io/spring-data/data-redis/docs/2.2.0.BUILD-SNAPSHOT/reference/html/#reference