2017-08-28 3 views
1

Ich bin dabei, einen Caching-Service mit Serverless zu integrieren.integriert redis in serverless

Ich habe mich entschieden, mit redis zu gehen. Durch das Lesen der npm redis scheint es jedoch erforderlich zu sein, dass Sie nach Abschluss der Anfrage client.quit() anrufen müssen.

Die Art, wie Serverless zu funktionieren scheint, ist, dass die Instanz erzeugt und dann gelöscht wird, wenn sie nicht verwendet wird. Also habe ich mich gefragt, ob es eine Möglichkeit gibt, die Redis-Verbindung zu beenden, wenn die serverlose Instanz gelöscht wird.

Oder ob ich einfach nur eine Verbindung bei jeder Anfrage starten muss und die Verbindung vor jeder Anfrage beenden muss.

Ich hatte gehofft, ich könnte es auf den App-Zustand, anstatt Anfrage Zustand, so dass ich nicht so viele Verbindungen spawnen muss.

Antwort

0

Nein. Eine Verbindung könnte wiederverwendet werden. Es muss nicht bei jeder Anfrage eine neue Verbindung gestartet werden.

Wenn Sie die redis.creatClient() verwenden, um eine Verbindung zu erstellen, können Sie diese Verbindung immer in Ihrer App verwenden. Und es hat wiederverbinden Mechanismus, wenn die Verbindung unterbrochen ist. Sie müssen also bei der Entwicklung Ihrer App nicht auf das Verbindungsproblem achten, sondern nur eine globale Verbindung herstellen und immer verwenden.

+0

Also muss ich 'client.quit()' überhaupt nicht aufrufen? Von was ich gelesen habe, wenn Sie dies nicht anrufen, schließt es die Verbindung nicht. –

+0

Ja, die Verbindung wird nicht geschlossen, wenn Sie client.quit() nicht aufrufen. Aber warum Sie client.quit() aufrufen, Ihre App läuft, und Sie brauchen diesen Client noch immer, um den Befehl an redis zu senden, Sie brauchen diese Verbindung trotzdem. Wenn Ihre App läuft, hält sie eine Verbindung zu redis. Wenn Sie den Befehl an redis senden möchten, verwenden Sie diesen Client, um dies zu tun. Wenn Sie für jede Anfrage einen Client erstellen, ist das ein großer Kostenfaktor. – GuangshengZuo

+0

Sie sollten den Client auf globale Variable festlegen, und überall in Ihrem Code könnte es verwenden. – GuangshengZuo