Java 是否可以使用Spring会话和Spring引导将会话存储在两个不同的存储中?
我正在使用redis在Spring Boot应用程序中存储会话。我还使用Spring会话库来实现这一点。我有两个不同的redis实例,即Java 是否可以使用Spring会话和Spring引导将会话存储在两个不同的存储中?,java,spring,spring-boot,redis,spring-session,Java,Spring,Spring Boot,Redis,Spring Session,我正在使用redis在Spring Boot应用程序中存储会话。我还使用Spring会话库来实现这一点。我有两个不同的redis实例,即US redis和EU redis。一旦有人进入我的应用程序(当然是在登录之后),我想将他们的会话存储在US redis和EU redis服务器中。请注意,这两个redis实例都是主实例,不在任何主从设置中。这就是我到目前为止在spring设置中所做的 @EnableRedisHttpSession @Configuration public class Red
US redis
和EU redis
。一旦有人进入我的应用程序(当然是在登录之后),我想将他们的会话存储在US redis
和EU redis
服务器中。请注意,这两个redis实例都是主实例,不在任何主从设置中。这就是我到目前为止在spring设置中所做的
@EnableRedisHttpSession
@Configuration
public class RedisConfig{
}
注意:为了简洁起见,删除了其他安全代码
根据文档,我们需要添加一个RedisConnectionFactory
实例,但是springboot默认会这样做
现在,一旦用户登录,他们的会话就会存储在usredis
(我在application.yml
中添加了与usredis相关的信息)
但是,每当会话存储在usredis
中时,我都希望在euredis
服务器中复制相同的会话。我怎样才能做到这一点?我是否需要创建另一个RedisConnectionFactory
bean并手动保存它?如果手动保存,如何保存
注意:此用例可能没有遵循最佳设计实践(即我们将用户会话存储在多个位置)。不过,我确实理解这一点,但我确实对此有一个用例。有一个内置的解决方案,但您可以随时调整spring代码,或者在编写时向远程Redis发送一个显式的
集
您可能想考虑使用一些类似于
的复制机制,复制是由底层连接完成的。例如,如果您在Spring会话Redis中使用莴苣,那么您可以使用一个。在Spring中,您可以参考文档的一节
Spring Boot提供了通过属性设置主/从的简单机制。这有一个很好的总结。简而言之,将属性添加到application.yml
redis:
master:
host: localhost
port: 6379
slaves:
- host: localhost
port: 16379
- host: localhost
port: 26379