当前位置: 首页 > 知识库问答 >
问题:

是否可以使用Spring session和Spring Boot在两个不同的存储中存储session?

匡凌
2023-03-14

我使用redis在我的Spring Boot应用程序中存储会话。我也在使用Spring会话库来实现这一点。我有两个不同的redis实例,即美国redisEU redis。一旦有人进入我的应用程序(当然是在登录之后),我希望将他们的会话存储在美国RedisEU Redis服务器中。请注意,这两个redis实例都是主实例,不在任何主从设置中。这是我到目前为止在我的Spring设置。

@EnableRedisHttpSession
@Configuration
public class RedisConfig{

}

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

然而,每当会话存储在美国Redis中时,我希望在EU Redis服务器中复制相同的会话。我怎样才能做到这一点?是否需要创建另一个redisconnectionFactorybean并手动保存它?如果手动保存,如何保存?

注意:这个用例可能没有遵循最佳设计实践(也就是说,我们将用户会话存储在多个地方)。然而,我确实理解这一点,但我确实有一个用例。

共有1个答案

滕渝
2023-03-14

复制由基础连接完成。例如,如果您将Lettuce与Spring Session Redis一起使用,那么您将使用主从设置来设置它。在Spring中,您可以参考文档中的连接到Redis一节。

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

redis:
  master:
    host: localhost
    port: 6379
  slaves:
    - host: localhost
      port: 16379
    - host: localhost
      port: 26379
 类似资料:
  • 我有一个注册程序,用户可以在餐厅预订餐桌。 因为我需要存储潜在的无限量的客户,所以我不能显式地创建Customer类的新实例,因为我需要能够在运行时添加它们。 我想过使用HashMap通过他们填写的注册表插入每个用户,但是,它不是保留每个客户的唯一值,而是用哈希图中的最新条目覆盖它们。 明确地说,键正在改变,它成功地添加了一个新的键,但是前一个键中的值被覆盖了 例子 类客户有 3 个设置器:设置

  • 我在JPA实体上拥有以下财产: 如果置信度设置为“0.000”,例如:setConfidence(新的BigDecimal(“0.000”));然后实体被持久化到数据库中,然后从数据库中取回,取回的值将失去其精度和规模,仅为0。 数据库模式是在部署Web应用程序时由JPA/Eclipselink创建的。 我的环境是EclipseLink 2.3.2。v20111125-r10461,Oracle

  • 我想使用一个存储库从不同的表中选择实体。我使用Spring Data JPA,并有自己的查询方法: 第一个问题,是否可以通过某种方式传递表名?因为现在我正在对表名进行编码。 接下来我有两个子类EntityOne和EntityTwo。它们的字段(列)与BaseEntity相同,但它们必须在不同的表中。 我尝试过为BaseEntity使用@Mep dSuperclass注释。但它不起作用,我有一个例外

  • 问题内容: 我需要在Spring Data Repository中使用原始SQL,这可能吗?我看到的所有内容始终都是基于实体的。 问题答案: @Query批注允许通过将nativeQuery标志设置为true来执行本地查询。 引用Spring Data JPA 参考文档。

  • 阅读文档时,并不十分清楚。 我想要的是能够存储和检索简单的json文档。使用CloudSearch,似乎可以以SDF格式存储文档,然后搜索它们,但它只返回文档ID和指定字段的一小部分(我认为是200个字符)。 有没有一种方法来检索完整的文档ID只是使用CloudSearch?还是打算作为搜索和使用主存储服务的附加工具?

  • 我目前正在使用ReactJS构建一个单页应用程序。 我读到不使用的原因之一是因为XSS漏洞。 由于 React 会转义所有用户输入,现在使用 是否安全?