gpt4 book ai didi

java - 是否可以使用 Spring Session 和 Spring Boot 将 session 存储在两个不同的商店中?

转载 作者:行者123 更新时间:2023-11-30 12:01:55 25 4
gpt4 key购买 nike

我正在使用 Redis 在我的 Spring Boot 应用程序中存储 session 。我也在使用 Spring Session 库来实现这一点。我有两个不同的 redis 实例,即 US redisEU redis。一旦有人进入我的应用程序(当然是在登录之后),我想将他们的 session 存储在 US redisEU redis 服务器中。请注意,这两个 redis 实例都是主实例,不在任何主从设置中。这是我目前在 spring 设置中所做的。

@EnableRedisHttpSession
@Configuration
public class RedisConfig{

}

注意:为简洁起见删除了其他安全代码。

根据 @EnableRedisHttpSession文档,我们需要添加一个 RedisConnectionFactory 实例,但是默认情况下 Spring Boot 会这样做。

所以现在,一旦用户登录,他们的 session 就存储在US redis中(我在application.yml中添加了US redis相关信息)。

但是,每当 session 存储在 US redis 中时,我想在 EU redis 服务器中复制相同的内容。我怎样才能做到这一点?我是否需要创建另一个 RedisConnectionFactory bean 并手动保存它?如果手动保存,如何保存?

注意:此用例可能未遵循最佳设计实践(即我们在多个地方存储用户 session )。但是我确实理解这一点,但我确实有一个用例。

最佳答案

复制由底层连接完成。例如,如果您将 Lettuce 与 Spring Session Redis 一起使用,那么您可以使用 Master Slave setup 来设置它。 . Spring中可以引用Connecting to Redis文档部分。

Spring Boot 提供了通过属性设置主/从的简单机制。这article有一个很好的总结。简而言之,将属性添加到 application.yml

redis:
master:
host: localhost
port: 6379
slaves:
- host: localhost
port: 16379
- host: localhost
port: 26379

关于java - 是否可以使用 Spring Session 和 Spring Boot 将 session 存储在两个不同的商店中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59160099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com