Как остановить redis-сервер?

У меня, по-видимому, есть экземпляр redis-server, потому что, когда я пытаюсь запустить новый сервер, введя redis-server, меня приветствуют следующим образом:

Opening port: bind: Address already in use

Я не могу понять, как остановить этот сервер и запустить новый.

Есть ли какая-либо команда, которую я могу добавить в redis-server при вводе в CLI?

Моя ОС - Ubuntu 10.04.

Ответ 1

Подключитесь к экземпляру node и используйте команду shutdown, или если вы находитесь на ubuntu, вы можете попробовать перезапустить сервер redis через init.d:

/etc/init.d/redis-server restart

или остановите/запустите его:

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

В Mac

redis-cli shutdown

Ответ 2

Более чистый, более надежный способ - перейти в redis-cli, а затем ввести shutdown

В redis-cli введите help @server, и вы увидите это в нижней части списка:

SHUTDOWN - сводка: синхронно сохраняйте набор данных на диск, а затем выключить сервер с: 0.07

И если у вас есть экземпляр redis-сервера, запущенный в терминале, вы увидите следующее:

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...

Ответ 3

redis-cli shutdown является наиболее эффективным. Принятый ответ не работает для меня (OSX Lion). Спасибо, @JesseBuesking.

Ответ 4

Для OSX я создал следующие псевдонимы для запуска и остановки redis (устанавливается вместе с Homebrew):

alias redstart='redis-server /usr/local/etc/redis/6379.conf'
alias redstop='redis-cli -h 127.0.0.1 -p 6379 shutdown'

Это отлично работает для локального развития!

Homebrew теперь имеет homebrew-services, который можно использовать для запуска, остановки и перезапуска сервисов. доморощенного-услуги

brew services автоматически устанавливается при запуске.

brew services start|run redis 
brew services stop redis
brew services restart redis

Если вы используете run, он не запустится ни при входе в систему (ни при загрузке). start запустит службу redis и добавит ее при входе в систему и загрузке.

Ответ 5

Введите SHUTDOWN в CLI

или

если вам не нужны ваши данные в памяти, вы также можете ввести SHUTDOWN NOSAVE, чтобы принудительно завершить работу сервера.

Ответ 6

Попробуйте killall redis-server. Вы также можете использовать ps aux, чтобы найти имя и pid вашего сервера, а затем убить его с помощью kill -9 here_pid_number.

Ответ 7

Вариант 1: перейдите в каталог установки redis и перейдите к src, в моем случае:

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

где 6379 - порт по умолчанию.

Вариант 2: найти процесс redis и убить

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

И затем инициируйте kill:

kill -9 22292

kill -9 22299

Я использую Centos 6.7, x86_64

надеюсь, что это поможет

Ответ 8

Другой способ:

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

Работает на * NIX и OSX

Ответ 9

остановить тип сервера redis в терминале с помощью пользователя root

sudo service redis-server stop

сообщение будет отображаться после остановки redis-сервера

Stopping redis-server: redis-server.

если вы хотите запустить тип redis-сервера

sudo service redis-server start

если вы хотите перезапустить тип сервера

sudo service redis-server restart

Ответ 10

MacOSX - It Worked:)

Шаг 1: найдите ранее запущенный сервер Redis

ps auxx | grep redis-server

Шаг 2: Убейте определенный процесс, найдя PID (идентификатор процесса) - Redis Sever

kill -9 PID

Ответ 11

Если вы знаете, на каком порту он будет работать (по умолчанию это будет 6379), вы можете использовать команду ниже, чтобы получить pid процесса с помощью этого порта, а затем выполнить команду kill для одного и того же pid.

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

приведенная выше команда даст вам pid.

kill <pid>;

Это остановит ваш сервер.

Ответ 12

Обычно эта проблема возникает после того, как я отключил свой компьютер (или оставил работу) нерегулярным способом. Я считаю, что порт закрывается, а процесс останавливается, но продолжает привязываться к предыдущему порту.

9/10 раз исправление может быть:

$ ps aux | grep redis

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

$ kill 2976

$ redis-server

Хорошо.

Ответ 13

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

Ответ 14

В моем случае это было:

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

Чтобы узнать, каково ваше имя службы, вы можете запустить:

sudo updatedb
locate redis

И он покажет вам все файлы Redis в вашей системе.

Ответ 15

Другой способ может быть:

brew services stop redis

Ответ 16

Следующее работало у меня на MAC

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

Ответ 17

Я не знаю специально для redis, но для серверов вообще:

Что такое ОС или дистрибутив? Часто будет команда stop или /etc/init.d/..., которая сможет искать существующий pid в файле pid.

Вы можете посмотреть, какой процесс уже привязан к порту с помощью sudo netstat -nlpt (параметры linux, другие варианты netstat будут меняться) и сигнализировать о его остановке. Я бы не использовал kill -9 на работающем сервере, если нет другого сигнала или метода для его закрытия.

Ответ 18

Команды ниже работают для меня на сервере Ubuntu

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

Ответ 19

Если вы знаете, на каком порту (по умолчанию: 6379) работает ваш сервер Redis, вы можете перейти с параметром 1 или проверить процесс Redis, и вы можете убить с помощью параметра 2.

Опция 1:
Убить процесс в порту:

check     : sudo lsof -t -i:6379
kill      : sudo kill 'sudo lsof -t -i:6379'

вариант 2:
Найдите ранее работающий сервер Redis:

 ps auxx | grep redis-server

Убить конкретный процесс, найдя PID (ID процесса) - Redis Sever

kill -9 PID

Теперь запустите ваш сервер Redis с

redis-server /path/to/redis.conf 

Ответ 20

В MacOSX,

Это то, что сработало для меня

/etc/init.d/redis restart

/etc/init.d/redis stop

/etc/init.d/redis start

Ответ 21

Одна вещь, чтобы проверить, не работают ли команды redis для вас, состоит в том, действительно ли создается ваш redis-server.pid. Вы указываете место, где находится этот файл

/etc/systemd/system/redis.service 

и он должен иметь раздел, который выглядит примерно так:

[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

Проверьте расположение и права доступа к каталогу PIDFile (в моем случае "/run/redis"). Я пытался перезапустить службу, вошедшую в систему как развертывание, но разрешения каталога были указаны как

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

Если вам нужно обновить разрешения Linux, проверьте это. Но проблема заключалась в том, что я выполнял перезапуск как мой пользователь развертывания, права доступа которого выше, rx, не позволяя моему пользователю писать в каталог PIDFile.

Как только я понял это, я вошел в систему, используя root, повторно выполнил команду restart на redis (service redis restart), и все service redis restart. Это была головная боль, но, надеюсь, это сэкономит кому-то немного времени.

Ответ 22

Если вы запускаете Redis в Docker-контейнере, ни один из настоящих ответов не поможет. Вы должны остановить контейнер Redis. В противном случае процесс повторного запуска будет возобновляться.

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

$ docker stop e1c008ab04a2
e1c008ab04a2