Wie bekomme ich alle Schlüssel und Werte in redis in Javascript?

8

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

    
Bhushan Gadekar 21.03.2017, 12:19
quelle

6 Antworten

3

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.

verwenden

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%     
Aruna 28.03.2017, 01:43
quelle
2

Kombination von zwei Anfragen:

%Vor%

Die Reihenfolge ist für beide Arrays gleich.

    
Iurii Perevertailo 04.10.2017 14:53
quelle
1

Dies wird alle Schlüssel aber ohne Werte erhalten:

%Vor%

Nun müssen Sie die Werte für diese Schlüssel auf eine übliche Weise erhalten. Zum Beispiel:

%Vor%

oder mit async Modul oder in irgendeiner Weise, die Sie mögen.

    
rsp 21.03.2017 12:28
quelle
1

Wenn client ein Object ist, dann mach einfach:

%Vor%

Sie erhalten eine Reihe von Schlüsseln und ein Array von Werten. Was am Index I in Werten ist, ist die value , die dem Schlüssel am Index I in keys entspricht.

    
Vivick 27.03.2017 17:05
quelle
1

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?

    
Adam Eri 29.03.2017 07:56
quelle
1

Vielleicht finden Sie in diesem Link etwas Nützliches

Ссылка

    
Dhiraj 31.03.2017 08:56
quelle