2016-07-09 279 views
0

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

+0

您可以在节点中使用lru-cache并设置过期时间。 https://www.npmjs.com/package/lru-cache – Jain

+0

亲爱的@fullOfQuestions,请接受其中一个答案 –

回答

1

hazelcast是一个提供API来解决缓存用例的Java库。 它扩展Java集合与高速缓存使用情况适用能力 - 条目驱逐,TTL,通读并通过高速缓存写入等

对于Node.js的使用情况下,请在这里找到我的答案https://stackoverflow.com/a/36704734/27563

让我知道你是否有任何问题。

谢谢

2

为什么不在应用程序和数据库之间使用持久异步队列?通过这种方式,您只需开火并忘记坚持的操作并尽可能快地提供结果。

如果你还想让对象留在内存中,你最好的选择就是像Infinispan或Hazelcast。 Infinispan为其缓存和良好的数据库集成提供了自己的持久性存储。另一端的Hazelcast更像在内存中的关键值存储中工作,但一些持久性也可以很容易地用它来实现。榛子演员很容易开始,学习曲线并不那么陡峭。

这个基础设施的好处是您可以安全地使您的数据与数据库同步。例如,您可以配置要保留的特定对象的多少备份以及这些备份是异步还是同步创建的,具体取决于您如何配置它们。您也可以将数据发送到数据库。如果持久性要求很高,Infinispan在这方面可能会更好。

当我第二次阅读您的文章时,我意识到也许您在缓存时需要更简单的事情。如果你只需要一个没有备份功能的本地缓存,那就去EHCache。