【问题标题】:Infinispan : Local cache onlyInfinispan :仅本地缓存
【发布时间】:2026-01-07 02:15:02
【问题描述】:

我正在使用 Infinispan (7.2.3.Final) 将数据存储到多个缓存中。

问题是:我只想在本地将数据存储到文件中。我不想将数据存储到内存中以避免内存问题。

我收到此错误:

java.lang.OutOfMemoryError: Java heap space

【问题讨论】:

  • 据我所知,Infinyspan是一个分布式内存,所以它的主要用途是使用RAM内存。那么为什么选择 Infinispan 而不是数据库(例如)?
  • 我选择 Infinispan 是因为它使用起来非常简单。
  • 简单性取决于用例。您可以配置 Infinispan 持久性 (infinispan.org/docs/stable/user_guide/…),但我认为它不会比直接使用数据库更简单。

标签: java infinispan


【解决方案1】:

Infinispan 是一个 Java 分布式内存。因此,如果您不想使用 RAM,我认为使用它无关紧要。在我看来,对 Infinispan 的良好使用意味着您将调整内存(大小和驱逐)以在运行成本、复杂性和性能之间找到一个良好的折衷。

您可以将 Infinispan 配置为持久化数据 (doc)。您可以将其配置为从 RAM 内存中逐出数据 (doc)。但是,如果您不描述您的用例,特别是为什么您认为您需要 Infinispan(为什么不需要数据库?),我无法建议真正的配置。

一种可能的用法是保留所有内存。显然你的数据必须足够小(我没有给出数字,有些人可以接受支付几台机器来减少延迟,这取决于你的业务......)

十年前,我们可以使用它们在数据库中简单地批量插入。现在我们将 Kafka 用于此用例。

一个常见的用法是将热数据保存在内存中。在这种情况下,我们配置驱逐和持久性。我认为您正在寻找驱逐策略here。有几种驱逐策略。但据我所知,没有一个允许根本不使用 RAM:对象将通过内存,至少在持久性期间是这样。

【讨论】: