2017-12-03 3 views
1

Ich versuche, eine Befehlszeile app Node.js mitCaching in Knoten js Befehlszeile app

I node-cache für das Caching einige Daten verwenden zu bauen, die von API-Aufrufen kommt.

Wenn ich jedoch versuche, die Daten myCache.get("key") abzurufen, die zuvor mit myCache.set("key", data, 10000); festgelegt wurden, gibt es immer zurück.

Ich denke, das Problem ist, wenn ich die App über die Befehlszeile ausführen Ich erstelle das Cache-Objekt jedes Mal const myCache = new NodeCache();.

Aber ohne das Objekt zu erstellen, wird Caching offensichtlich nicht funktionieren. Gibt es dafür irgendeine Arbeit?

Antwort

2

Die Cache-Bibliothek, die Sie verwenden, speichert die Daten im Anwendungsspeicher. Sobald die App beendet wird, geht der Cache verloren.

In der Web-Anwendung ist die Situation anders, weil die App nie beendet wird (es sei denn, es stürzt ab), so bleibt der Cache mit den Daten.

Eine Möglichkeit, dies zu lösen, ist, den Cache im externen Speicher wie Redis zu speichern (aber dafür muss der Redis-Server laufen) oder vielleicht nur in der Textdatei oder SQLite db. Sie müssen entweder eine einfache Caching-Bibliothek dafür schreiben oder nach einer Bibliothek suchen, die den persistenten Speicher bereitstellt.

Update: schnelle Suche gibt diese Bibliothek: https://www.npmjs.com/package/cache-manager, ich habe es nicht verwendet, aber die Dokumente sagen, es unterstützt möglicherweise verschiedene Speicher die Daten beibehalten und node-cache-manager-fs könnte für Ihren Fall gut sein.

+0

Ja! Ich vermute, das könnte das Problem sein. Redis zu verwenden wäre allerdings ein Overkill. Müssen Sie etwas herausfinden. –

+0

Ich habe die Antwort mit der Bibliothek aktualisiert, die ich von der Schnellsuche erhalten habe, sie unterstützt das Dateisystem als Speicher, der gut zu Ihrem Anwendungsfall passt. –

+0

Überprüft, dass es funktioniert. Auch versucht mit node_redis - https://github.com/NodeRedis/node_redis. Dieser funktioniert auch gut, erfordert keinen zusätzlichen Redis-Server, denke ich. –