Ich erstelle eine Knoten-API mit Javascript. Ich habe redis als meinen wichtigsten Wertspeicher verwendet. Ich habe einen Redis-Client in meiner App erstellt und bin in der Lage, Werte für den Schlüssel zu erhalten.
Ich möchte alle Schlüssel zusammen mit ihren Werten abrufen. Bisher habe ich das getan:
%Vor%aber ich bekomme immer ein leeres Array als Antwort.
gibt es eine Möglichkeit, dies in Javascript zu tun?
Danke
Zunächst besteht das Problem in Ihrer Frage darin, dass for
innerhalb der client.get
-Schleife mit einem asynchronen -Rückruf aufgerufen wird, wobei synchron % co_de ist % loop wartet nicht auf den asynchronen Callback und daher wird die nächste Zeile for
unmittelbar nach der res.json({data:jobs});
-Schleife vor den asynchronen Callbacks aufgerufen. Zum Zeitpunkt des Aufrufs der Zeile for
ist das Array res.json({data:jobs});
immer noch leer jobs
und wird mit der Antwort zurückgegeben.
Um dies zu vermeiden, sollten Sie alle Versprechen Module wie []
, async
, bluebird
etc.
Modifizierter Code mit asynchronem Modul
%Vor%Aber aus der
ES6 Promise
Dokumentation ist ersichtlich, dass die Verwendung von Schlüssel sind für das Debugging und spezielle Operationen vorgesehen, wie z Ändern Sie Ihr Keyspace-Layout und nicht ratsam für die Produktion Umgebungen.
Daher würde ich vorschlagen, ein anderes Modul namens redisscan zu verwenden, das Redis
anstelle von SCAN
as verwendet vorgeschlagen in der KEYS
Dokumentation .
Etwas wie
%Vor%Kombination von zwei Anfragen:
%Vor%Die Reihenfolge ist für beide Arrays gleich.
Das solltest du niemals tun. Zunächst einmal ist es nicht empfehlenswert, KEYS *
in der Produktion zu verwenden. Zweitens macht dies keine Skalierung (Cluster).
Sie können Ihre gecachten Einträge in SETs organisieren und nach den Elementen innerhalb des SET suchen und dann die Referenzschlüssel abrufen. Dies erleichtert auch die Invalidierung.
Sehen Sie sich einige Best Practices für die Datenspeicherung an.
Ссылка wie Sie alle Schlüssel und Werte in redis erhalten Javascript?
Tags und Links javascript node.js redis key-value