У меня, по-видимому, есть экземпляр redis-server
, потому что, когда я пытаюсь запустить новый сервер, введя redis-server
, меня приветствуют следующим образом:
Opening port: bind: Address already in use
Я не могу понять, как остановить этот сервер и запустить новый.
Есть ли какая-либо команда, которую я могу добавить в redis-server
при вводе в CLI?
Моя ОС - Ubuntu 10.04.
Подключитесь к экземпляру 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
Более чистый, более надежный способ - перейти в 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...
redis-cli shutdown
. (вы можете отправить любую команду, например, например, redis-cli set cat dog; redis-cli get cat
)
redis-cli set cat dog; redis-cli get cat
изменить redis-cli set cat dog; redis-cli get cat
на redis-cli -a mypassword set cat dog; redis-cli -a mypassword get cat
, который может раздражать после нескольких команд.
redis-cli shutdown
является наиболее эффективным. Принятый ответ не работает для меня (OSX Lion). Спасибо, @JesseBuesking.
redis-cli.exe shutdown
Для 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'
Это отлично поработало для меня для локального развития.
brew services stop redis
также работает! :)
Введите 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:
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
Если вы знаете, на каком порту он будет работать (по умолчанию это будет 6379), вы можете использовать команду ниже, чтобы получить pid процесса с помощью этого порта, а затем выполнить команду kill для одного и того же pid.
sudo lsof -i : <port> | awk '{print $2}'
приведенная выше команда даст вам pid.
kill <pid>
;
Это остановит ваш сервер.
MacOSX - It Worked:)
Шаг 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
service --status-all
не будет отображаться redis, поэтому любая команда service
не будет работать с redis-server
. Но redis отображается в ps -ef
. Я просто не могу найти связанный документ.
В моем случае это было:
/etc/init.d/redismaster stop
/etc/init.d/redismaster start
Чтобы узнать, каково ваше имя службы, вы можете запустить:
sudo updatedb
locate redis
И он покажет вам все файлы Redis в вашей системе.
Обычно эта проблема возникает после того, как я отключил свой компьютер (или оставил работу) нерегулярным способом. Я считаю, что порт закрывается, а процесс останавливается, но продолжает привязываться к предыдущему порту.
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
Хорошо.
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
Команды ниже работают для меня на сервере 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
Я не знаю специально для redis, но для серверов вообще:
Что такое ОС или дистрибутив? Часто будет команда stop или /etc/init.d/..., которая сможет искать существующий pid в файле pid.
Вы можете посмотреть, какой процесс уже привязан к порту с помощью sudo netstat -nlpt
(параметры linux, другие варианты netstat будут меняться) и сигнализировать о его остановке. Я бы не использовал kill -9
на работающем сервере, если нет другого сигнала или метода для его закрытия.