【问题标题】:keep data in memory instead of saving in database java将数据保存在内存中而不是保存在数据库中 java
【发布时间】:2016-11-11 21:36:10
【问题描述】:

我想运行一个 java 函数,它会生成一个大小约为 1M 的 json。我需要 json 来输入 2 分钟后的下一个呼叫。我可以将 json 保存在数据库中,但是保存在数据库中所花费的时间对我来说是不可接受的。我可以将这些数据保存在内存中并用于下次通话吗?我还需要从 node.js 读取这些数据。我该如何做这份工作?

【问题讨论】:

  • 您可以在节点中使用 lru-cache 并设置过期时间。 npmjs.com/package/lru-cache
  • 亲爱的@fullOfQuestions,请接受其中一个答案

标签: java node.js database caching memory


【解决方案1】:

为什么不在应用程序和数据库之间使用持久异步队列。这样,您只需触发并忘记持久操作并尽快提供结果。

如果您还想将对象保存在内存中,最好的选择是 Infinispan 或 Hazelcast。 Infinispan 为缓存和良好的数据库集成提供了自己的持久存储。另一方面,Hazelcast 更像是在内存中键值存储,但也可以很容易地用它实现一些持久性。 Hazel cast 很容易上手,学习曲线也不是那么陡峭。

此基础架构的好处是您可以确保数据与数据库同步,从而确保安全。例如,您可以配置要保留多少特定对象的备份,这些备份是异步或同步创建的,具体取决于您的配置方式。您还可以将数据发送到数据库。如果持久性是强要求,那么 Infinispan 在这方面可能会更好。

当我第二次阅读您的帖子时,我意识到也许您在缓存方面需要一些简单得多的东西。如果您只需要没有备份功能的本地缓存,请选择 EHCache。

【讨论】:

    【解决方案2】:

    hazelcast 是一个提供 API 来解决缓存用例的 Java 库。 它使用适用于缓存用例的功能扩展了 java 集合 - 驱逐、条目的 ttl、通过缓存读取和写入等。

    对于 node.js 用例,请在此处找到我的答案https://stackoverflow.com/a/36704734/27563

    如果您有任何问题,请告诉我。

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      相关资源
      最近更新 更多