So halten Sie den Redis-Server am Laufen

83

Ich verwende Redis für die Sitzungsunterstützung in der NodeJS-App. Ich habe den Redis-Server installiert und es funktioniert, wenn ich den Redis-Server ausführe, aber wenn ich das Terminal schließe, stoppt Redis und funktioniert nicht. Wie kann ich den Redis-Server nach dem Schließen des Terminals weiter betreiben?

Yalamber
quelle

Antworten:

73

Der einfachste Weg, Redis als Daemon zu starten, besteht darin, die Konfigurationsdatei zu bearbeiten und die folgende Zeile zu ändern:

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes

Stellen Sie sicher, dass Sie die Konfigurationsdatei in der Redis-Server-Befehlszeile angeben, wenn Sie sie starten.

Ein Beispiel für eine Konfigurationsdatei finden Sie in der Redis-Distribution.

Didier Spezia
quelle
Ich habe gesehen, wie Sie es als Daemon ausführen, aber welchen Befehl verwenden Sie dann, um es als Daemon auszuführen?
Michael Fender
Dies hängt von der Plattform- und Betriebssystemverteilung ab.
Didier Spezia
nächstes Suchergebnis unten digitalocean.com/community/tutorials/…
Nick
11
Bei dieser Antwort gibt es einige Probleme: 1) Sie teilt dem Benutzer nicht mit, wo die Konfigurationsdatei gespeichert ist. 2) Es wird nicht angegeben, für welche Plattform diese Antwort gilt (wenn es unterschiedliche Speicherorte für die Konfigurationsdatei gibt; geben Sie zumindest an, auf welcher Plattform Sie sie installiert haben, um dieses Ergebnis zu erhalten). 3) Es wird nicht einmal angegeben, wie der Name lautet Die Konfigurationsdatei ist.
George Stocker
Ihre Antwort gab mir eine Idee, die mein Problem löste. Ich hatte die daemonizeOption auf Ja gesetzt und versuchte, den Docker-Container mit dem am Leben zu erhalten, -D FOREGROUNDaber es funktionierte nicht und der Container wurde beendet. Ich habe diese Option entfernt und die daemonizeOption wieder auf Nein geändert , und es hat funktioniert, der Container wird am Leben gehalten.
Stephane
191

Wenn Sie eine schnelle Option wünschen, führen Sie Folgendes aus : redis-server --daemonize yes.

Seen sind
quelle
2
darf ich fragen, was der Unterschied zwischen diesem und ist redis-server &?
Uduse
4
@Uduse Wenn Sie es &am Ende mit ausgeführt haben, wird der Serverprozess beim Verlassen des Terminals beendet. stackoverflow.com/a/15595391/6263317
Jon Deaton
1
@ JonDeaton danke für die Erklärung, aber was ist dann mit nohup redis-server &vs redis-server --daemonize? Ich meine, es scheint, dass es eine Möglichkeit gibt, die gleiche Funktionalität ohne Verwendung zu erreichen, --daemonizeund diese Option wird nicht wirklich benötigt.
Uduse
22

Wie von @DidierSpezia in seiner Antwort erwähnt,

In daemonize yesRedis Conf-Datei einstellen. In der daemonize yesRedis conf-Datei auf einstellen. Im /path/to/redis.confAllgemeinen sollte es dort sein /etc/.

Und :

Dann lösen Sie redis-server mit der conf-Datei als Argument aus:

./redis-server /etc/redis.conf

UPDATE Sie können die Redis auch direkt mit demonizeFlag ausführen

redis-server --daemonize yes
T-Rex
quelle
-1

Unter Linux bin ich mir bei Windows nicht sicher. Verwenden Sie nohup, um die Redis im Hintergrund auszuführen. Um Redis im Hintergrund mit nohup auszuführen

  1. Gehen Sie zum Verzeichnis redis src, in meinem Fall ist es / opt / redis-stabile / src
  2. Führen Sie den Befehl ausnohup ./redis-server &
  3. Jetzt begann Redis im Hintergrund
  4. Drücken Sie jetzt Strg + C, um den Vorgang zu beenden, und die Protokolle werden in die Datei nohup.out gedruckt. Sie können diese auch überwachen, um sie zu überwachen
  5. Verwenden Sie tail -f nohup.out, um die Protokolle von redis anzuzeigen
Mohammed Irfan Tirupattur
quelle
@domdambrogia mit Nohup wird es nicht beendet, es wird im Hintergrund ausgeführt. Überprüfen Sie nohup.out für Protokolle
Mohammed Irfan Tirupattur
1
Sie haben Recht, ich habe nur den kaufmännischen Und-Inline-Code ohne den Rest Ihrer Antwort gelesen. Ich werde meinen Kommentar entfernen!
Domdambrogia
@MohammedIrfanTirupattur: Aber das läuft nicht, wie Daemon weiß! es wird getötet, wenn das Terminal geschlossen wird
Aarish Ramesh
@AarishRamesh nein, das tut es nicht. Es wird im Hintergrund ausgeführt. Vergessen Sie nicht, kaufmännisches Und zu verwenden. Sie können auch die Protokolle von nohup.log im aktuellen Verzeichnis überprüfen
Mohammed Irfan Tirupattur