2016-07-09 189 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。