最近,我们开始使用spring会话作为会话管理器。我们的应用程序已经在生产中运行了8-10个月。有一个使用这个后端的移动应用程序。
当我将会话存储库更改为spring会话时,移动应用程序中的所有现有登录用户都将自动注销。然后他们将不得不再次登录。
是否存在将所有现有日志记录的用户会话迁移到Redis实例的问题。
发布于 2019-07-26 07:03:28
如果我的理解是正确的,那么迁移现有连接的答案是否定的,因为您正在更改后端连接。任何新用户都需要使用新的连接类实例化到应用程序的连接。根据我们在这里讨论的用户数量,可能允许当前连接的用户在httpsession上运行,并且允许所有新的连接在spring会话上运行。在映射所有现有的已连接用户时,要一直使用httpsession,直到他们的连接耗尽或断开,并管理拆分,以便新用户使用redis会话应用服务器。
如果上述情况并非如此,并且您正在寻找使用Spring会话的指南,那么:
首先,您将需要包含数据redis的spring会话模块,在这里可以找到: https://github.com/spring-projects/spring-session
然后,需要添加以下配置:
@EnableRedisHttpSession
public class Config {
@Bean
public LettuceConnectionFactory connectionFactory() {
return new LettuceConnectionFactory();
}
}
@EnableRedisHttpSession注释创建一个Spring,名称为springSessionRepositoryFilter,实现过滤器。过滤器负责替换由Spring会话支持的HttpSession实现。在这种情况下,Spring会话由Redis支持。我们创建一个将Spring会话连接到Redis的RedisConnectionFactory。我们将连接配置为连接到默认端口(6379)上的本地主机。有关配置Spring的更多信息,请参见参考文档。
,然后创建一个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
https://stackoverflow.com/questions/57075420
复制相似问题