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

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

Opening port: bind: Address already in use

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

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

моя ОС-Ubuntu 10.04.

19 ответов


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

/etc/init.d/redis-server restart

или "стоп/старт" это:

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

На Mac

redis-cli shutdown

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

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

SHUTDOWN-summary: синхронно сохраните набор данных на диск, а затем завершите работу сервера с: 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...

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


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

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

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

это отлично сработало для меня для местного развития.


тип SHUTDOWN в CLI

или

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


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


Вариант 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 -9 22292

kill -9 22299

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

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


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

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

работает на *NIX & OSX


MacOSX-Это Сработало:)

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

ps auxx | grep redis-server

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

kill -9 PID

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

sudo service redis-server stop

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

Stopping redis-server: redis-server.

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

sudo service redis-server start

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

sudo service redis-server restart

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

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

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

убить <pid>;

это выключит ваш сервер.


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

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

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

sudo updatedb
locate redis

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


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

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

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

хорошо идти.


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

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

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


приведенные ниже команды работают для меня на Ubuntu Сервер

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

На MacOSX,

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

/etc/init.d/redis restart

/etc/init.d/redis stop

/etc/init.d/redis start

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

brew services stop redis

одна вещь, чтобы проверить, если команды redis не работают для вас, если ваш redis-сервер.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'). Я пытался перезапустить службу, вошедшую в систему как deploy, но разрешения каталога были перечислены как

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

Если вам нужно обновить разрешения linux,зацените. Но проблема заключалась в том, что я выполнял перезапуск как мой пользователь развертывания, разрешения которого выше r-x, не позволяя моему пользователю писать в каталог PIDFile.

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