2016-07-09 15 views
0

Ich möchte eine Java-Funktion ausführen und es generiert ein JSON, das über 1M Größe hat. Ich brauche den JSON für die Eingabe des nächsten Anrufs, der 2 Minuten später ist. Ich kann den JSON in einer Datenbank speichern, aber die Zeit, die ich für das Speichern in der Datenbank ausgegeben habe, ist für mich nicht akzeptabel. kann ich diese Daten im Speicher behalten und für den nächsten Anruf verwenden? Ich muss diese Daten auch von node.js lesen. Wie kann ich diesen Job machen?Daten im Speicher behalten, anstatt in der Datenbank zu speichern Java

+0

können Sie Lru-Cache im Knoten verwenden und Ablauf festlegen. https://www.npmjs.com/package/lru-cache – Jain

+0

Liebe @fullOfQuestions, bitte eine der Antworten zu akzeptieren –

Antwort

1

hazelcast ist eine Java-Bibliothek, die APIs zur Verfügung stellt, um den Caching-Anwendungsfall zu lösen. Es erweitert Java-Sammlungen mit geeigneten Fähigkeiten für das Caching Use Case - Räumung, ttl für Einträge, lesen und schreiben durch Cache usw.

Für node.js Fall benutzen Sie bitte meine Antwort hier https://stackoverflow.com/a/36704734/27563

Lassen Sie mich finden wissen Sie, wenn Sie irgendwelche Fragen haben.

Dank

2

Warum verwenden Sie keine dauerhafte asynchrone Warteschlange zwischen Ihrer Anwendung und Ihrer Datenbank? Auf diese Weise feuern Sie einfach und vergessen Sie die andauernde Operation und bedienen Sie das Ergebnis so schnell wie möglich.

Wenn Sie das Objekt auch im Speicher behalten möchten, wäre Ihre beste Wette etwas wie Infinispan oder Hazelcast. Infinispan bietet einen eigenen persistenten Speicher für den Cache und eine gute Datenbankintegration. Hazelcast am anderen Ende funktioniert mehr als In Memory-Schlüssel Wert speichern, aber einige Persistenz kann leicht damit implementiert werden. Hazel Cast ist sehr einfach zu beginnen und die Lernkurve ist nicht so steil.

Das Gute an dieser Infrastruktur ist, dass Sie die Sicherheit haben, dass Ihre Daten mit der Datenbank synchronisiert sind. Zum Beispiel können Sie konfigurieren, wie viele Sicherungen eines bestimmten Objekts aufbewahrt werden sollen, und diese Sicherungen werden asynchron oder synchron erstellt, je nachdem, wie Sie sie konfigurieren. Sie können die Daten auch an die Datenbank senden. Wenn Persistenz eine starke Anforderung ist, ist Infinispan in dieser Hinsicht wahrscheinlich besser.

Als ich das zweite Mal Ihren Beitrag gelesen habe, habe ich festgestellt, dass Sie vielleicht etwas wesentlich einfacheres zum Caching brauchen. Wenn Sie nur einen lokalen Cache ohne Backup-Funktionen benötigen, gehen Sie einfach zu EHCache.