web-dev-qa-db-fra.com

Comment puis-je arrêter le serveur Redis?

J'ai apparemment une instance redis-server en cours d'exécution, car lorsque j'essaie de démarrer un nouveau serveur en entrant redis-server, les messages suivants sont reçus:

Opening port: bind: Address already in use

Je n'arrive pas à comprendre comment arrêter ce serveur et en démarrer un nouveau.

Existe-t-il une commande que je peux ajouter à redis-server lorsque je tape dans la CLI?

Mon système d'exploitation est Ubuntu 10.04.

254
Qcom

Connectez-vous à une instance de noeud et utilisez shutdown command ou, si vous êtes sur Ubuntu, vous pouvez essayer de redémarrer le serveur Redis via init.d

/etc/init.d/redis-server restart

ou arrêter/démarrer:

/etc/init.d/redis-server stop
/etc/init.d/redis-server start

Sur Mac

redis-cli shutdown
405
yojimbo87

Une méthode plus propre et plus fiable consiste à entrer dans redis-cli, puis à taper shutdown

Dans redis-cli, tapez help @server et vous verrez ceci au bas de la liste:

SHUTDOWN - summary: enregistrez le jeu de données sur le disque de manière synchrone, puis arrêter le serveur depuis: 0.07

Et si vous avez une instance de serveur Redis s'exécutant dans un terminal, vous verrez ceci:

User requested shutdown...
[6716] 02 Aug 15:48:44 * Saving the final RDB snapshot before exiting.
[6716] 02 Aug 15:48:44 * DB saved on disk
[6716] 02 Aug 15:48:44 # Redis is now ready to exit, bye bye...
184
Kevin McTigue

redis-cli shutdown est le plus efficace. La réponse acceptée ne fonctionne pas pour moi (OSX Lion). Merci, @ JesseBuesking.

128
SimplGy

Pour osx, j'ai créé les alias suivants pour démarrer et arrêter redis (redis est installé avec homebrew):

alias redstart='redis-server /usr/local/etc/redis/6379.conf'

alias redstop='redis-cli -h 127.0.0.1 -p 6379 shutdown'

Cela a très bien fonctionné pour moi pour le développement local.

25
Ray Hunter

Tapez SHUTDOWN dans la CLI

ou

si vous ne vous souciez pas de vos données en mémoire, vous pouvez également taper SHUTDOWN NOSAVE pour forcer l'arrêt du serveur.

23
user1651082

Essayez killall redis-server. Vous pouvez également utiliser ps aux pour trouver le nom et le pid de votre serveur, puis le tuer avec kill -9 here_pid_number.

15
ciembor

Option 1: accédez au répertoire d'installation de redis et accédez à src, dans mon cas: 

/opt/redis3/src/redis-cli -p 6379 shutdown

où 6379 est le port par défaut.

Option 2: trouver le processus redis et tuer

ps aux | grep redis-server

t6b3fg   22292  0.0  0.0 106360  1588 pts/0    S+   01:19   0:00 /bin/sh /sbin/service redis start
t6b3fg   22299  0.0  0.0  11340  1200 pts/0    S+   01:19   0:00 /bin/sh /etc/init.d/redis start

Et puis initier tuer:

kill -9 22292

kill -9 22299

J'utilise Centos 6.7, x86_64

j'espère que ça aide

11
App Work

Une autre façon pourrait être:

ps -ef | grep -i 'redis-server'
kill -9 PID owned by redis

Fonctionne sur * NIX & OSX

10
smace

arrête le type de serveur redis dans le terminal avec l'utilisateur root

Sudo service redis-server stop

le message sera affiché après l'arrêt du serveur redis

Stopping redis-server: redis-server.

si vous voulez démarrer le type de serveur redis

Sudo service redis-server start

si vous voulez redémarrer le type de serveur

Sudo service redis-server restart
7
denny

MacOSX - Cela a fonctionné :)

Étape 1: Trouvez le serveur Redis précédemment en cours d'exécution

ps auxx | grep redis-server

Étape 2: Éliminer le processus spécifique en recherchant le PID (ID du processus) - Redis Sever

kill -9 PID
6

Si vous savez sur quel port il serait exécuté (par défaut ce serait 6379), vous pouvez utiliser la commande ci-dessous pour obtenir le pid du processus utilisant ce port, puis exécuter la commande kill pour le même pid.

Sudo lsof -i : <port> | awk '{print $2}'

la commande ci-dessus vous donnera pid.

kill <pid>;

Cela arrêterait votre serveur. 

5
cptjack

Habituellement, ce problème survient après que j'arrête mon ordinateur (ou que je le laisse en marche) de manière irrégulière. Je crois que le port reste bloqué pendant que le processus s'arrête mais reste lié au port précédent.

9/10 fois le correctif peut être:

$ ps aux | grep redis

-> MyUser 2976  0.0  0.0  2459704    320   ??  S    Wed01PM   0:29.94 redis-server *:6379

$ kill 2976

$ redis-server

Bon pour y aller. 

4
Christopher Knight

Dans mon cas c'était:

/etc/init.d/redismaster stop
/etc/init.d/redismaster start

Pour savoir quel est le nom de votre service, vous pouvez exécuter:

Sudo updatedb
locate redis

Et il vous montrera tous les fichiers Redis de votre système.

3
joan16v

systemd, Ubuntu 16.04:

$ Sudo systemctl is-active redis-server
active

$ Sudo systemctl is-enabled redis-server
enabled

$ Sudo systemctl disable redis-server
Synchronizing state of redis-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable redis-server
Removed /etc/systemd/system/redis.service.

$ Sudo systemctl stop redis-server
3
Adobe

Une autre façon pourrait être:

brew services stop redis
2
Ihor Pavlyk

Après travaillé pour moi sur MAC

 ps aux | grep 'redis-server' | awk '{print $2}' | xargs Sudo kill -9
2
Mahesh Hegde

Je ne sais pas spécifiquement pour Redis, mais pour les serveurs en général:

Quel OS ou distribution? Il y aura souvent une commande stop ou /etc/init.d/... qui sera capable de rechercher le pid existant dans un fichier pid.

Vous pouvez rechercher le processus déjà lié au port avec Sudo netstat -nlpt (options linux; les variantes de netstat varient) et lui indiquer de s’arrêter. Je voudrais pas utiliser kill -9 sur un serveur en cours d'exécution à moins qu'il n'y ait vraiment aucun autre signal ou méthode permettant de l'éteindre.

1
ysth

Les commandes ci-dessous fonctionnent pour moi sur Ubuntu Server

$ service /etc/init.d/redis_6379 stop
$ service /etc/init.d/redis_6379 start
$ service /etc/init.d/redis_6379 restart
1
efkan

Sur MacOSX, 

C'est ce qui a fonctionné pour moi

/etc/init.d/redis restart

/etc/init.d/redis stop

/etc/init.d/redis start
0
tsuz

Si vous exécutez redis dans un conteneur Docker, aucune des réponses actuelles ne vous aidera. Vous devez arrêter le conteneur Redis. Sinon, le processus redis continuera à respirer.

$ docker ps
CONTAINER ID        IMAGE                    PORTS                             
e1c008ab04a2        bitnami/redis:4.0.8-r0   0.0.0.0:6379->6379/tcp

$ docker stop e1c008ab04a2
e1c008ab04a2
0
Wladek Surala

Si vous savez sur quel port (par défaut: 6379) votre serveur Redis est en marche, vous pouvez aller avec option 1 ou vous pouvez vérifier votre processus Redis et vous pouvez tuer avec option 2

Option 1:
Tuer le processus sur le port:

check     : Sudo lsof -t -i:6379
kill      : Sudo kill `Sudo lsof -t -i:6379`

Option 2:
Recherchez le serveur Redis précédemment en cours d’exécution:

 ps auxx | grep redis-server

Tuez le processus spécifique en recherchant un PID (ID de processus) - Redis Sever

kill -9 PID

Maintenant démarrez votre serveur Redis avec

redis-server /path/to/redis.conf 
0

Une chose à vérifier si les commandes redis ne fonctionnent pas pour vous est si votre redis-server.pid est en cours de création. Vous spécifiez l'emplacement de ce fichier 

/etc/systemd/system/redis.service 

et il devrait avoir une section qui ressemble à ceci: 

[Service]
Type=forking
User=redis
Group=redis
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
PIDFile=/run/redis/redis-server.pid
TimeoutStopSec=0
Restart=always

Vérifiez l'emplacement et les autorisations du répertoire PIDFile (dans mon cas, '/ run/redis'). J'essayais de redémarrer le service connecté en tant que déploiement mais les autorisations de répertoire étaient répertoriées comme 

drwxrwsr-x  2 redis    redis      40 Jul 20 17:37 redis

Si vous avez besoin d'un rappel sur les permissions de linux, vérifiez ceci . Mais le problème était que j'exécutais le redémarrage en tant qu'utilisateur déployé pour lequel les autorisations ci-dessus sont définies sur r-x, ne permettant pas à l'utilisateur d'écrire dans le répertoire PIDFile.

Une fois que j'ai compris cela, je me suis connecté à l'aide de root, j'ai relancé la commande de redémarrage sur le redis (service redis restart) et tout a fonctionné. C'était un mal de tête, mais j'espère que cela fera gagner un peu de temps à quelqu'un.

0
Lauren Marie Lahm