Не удалось подключиться к Redis на 127.0.0.1:6379: соединение отклонено с помощью homebrew


121

Использование homebrew для установки Redis, но когда я пытаюсь выполнить ping-запрос Redis, он показывает эту ошибку:

Could not connect to Redis at 127.0.0.1:6379: Connection refused

Примечание: я попытался отключить брандмауэр и отредактировать файл conf, но все равно не могу проверить связь. Я использую macOS Sierra и homebrew версии 1.1.11.

Ответы:


284

После установки redisвведите terminal:

redis-server

И Redis-Server будет запущен


1
Однако как мне запретить ему слушать этот порт / хост?
Афолаби Олаолува Акинвуми

@AfolabiOlaoluwaAkinwumi Пожалуйста, обратитесь, как я могу остановить redis-server
LuFFy

3
Для окон из командной строки, cd C:\Program Files\Redisа затем redis-server
Прадип Кумар Прабахаран

2
как постоянно запускать redis-server в фоновом режиме, я использую ubuntu @LuFFy
ААТИТ РАДЖЕНДРАН

1
@AATHITHRAJENDRAN, проверьте этот ответ , я надеюсь, он поможет
LuFFy

37

Я нашел этот вопрос, пытаясь понять, почему я не могу подключиться к Redis после его запуска через brew services start redis.

ТЛ; др

В зависимости от того, насколько свежая ваша машина или установлена, вам, вероятно, не хватает файла конфигурации или каталога для значений по умолчанию Redis.

  1. Вам нужен файл конфигурации по адресу /usr/local/etc/redis.conf. Без этого файла redis-serverне запустится. Вы можете скопировать файл конфигурации по умолчанию и изменить его оттуда с помощью

    cp /usr/local/etc/redis.conf.default /usr/local/etc/redis.conf
    
  2. Вам нужно /usr/local/var/db/redis/существовать. Вы можете легко сделать это с помощью

    mkdir -p /usr/local/var/db/redis
    

Наконец, просто перезапустите Redis с помощью brew services restart redis.

Как вы это узнали !?

Я потратил много времени, пытаясь выяснить, не использует ли redis значения по умолчанию через homebrew и на каком порту он был. Службы вводили в заблуждение, потому что даже если redis-serverони на самом деле не были запущены, brew services listони все равно отображали redis как «запущенные». Лучше всего использовать, brew services --verbose start redisкоторый покажет вам, что файл журнала находится по адресу /usr/local/var/log/redis.log. Заглянув туда, я нашел дымящийся пистолет (ы)

Fatal error, can't open config file '/usr/local/etc/redis.conf'

или

Can't chdir to '/usr/local/var/db/redis/': No such file or directory

К счастью, журнал сделал решение выше очевидным.

Разве я не могу просто бежать redis-server?

Вы конечно можете. Он просто займется терминалом или иногда прервет ваш терминал, если вы запустите его redis-server &. Также он будет помещен dump.rdbв любой каталог, в котором вы его запускаете ( pwd). Меня раздражала необходимость удалить файл или игнорировать его в git, поэтому я решил, что позволю brew выполнять работу с сервисами.


спасибо, это решило мою проблему в проекте laravel, где я получал отказ в соединении в строке 155 abstractconnection.php
luckyguy73

У меня тоже была ошибка в строке 155 abstractconnection.php! Псих.
Кевин Ганьон

Мне очень помогло начало подробного описания. У меня возникла проблема с redis.conf. Спасибо
SangamAngre

18

Если после установки вам нужно работать redisпостоянно, просто введите терминал:

redis-server &

Запуск Redis с использованием выскочки в Ubuntu

Я пытался понять, как настраивать системы с нуля на Ubuntu. Я только что установил redisна коробку, и вот как я это сделал, и кое-что, на что нужно обратить внимание.

Установить:

sudo apt-get install redis-server

Это создаст redisпользователя и установит init.dдля него сценарий. Поскольку upstartтеперь это замена использованию init.d, я полагаю, мне нужно преобразовать его для запуска с использованием upstart.

Чтобы отключить init.dсценарий по умолчанию для redis:

sudo update-rc.d redis-server disable

Затем создайте /etc/init/redis-server.confс помощью следующего скрипта:

description "redis server"

start on runlevel [23]
stop on shutdown

exec sudo -u redis /usr/bin/redis-server /etc/redis/redis.conf

respawn

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

Одна вещь, в которой мне пришлось измениться, /etc/redis/redis.conf- daemonize yesэто daemonize no. Что произойдет, если вы его не измените, тогда redis-serverпроизойдет разветвление и демонизация, а родительский процесс уйдет. Когда это происходит, upstartдумает, что процесс умер / остановился и у вас не будет контроля над процессом изнутри upstart.

Теперь вы можете использовать следующие команды для управления своим redis-server:

sudo start redis-server
sudo restart redis-server
sudo stop redis-server

Надеюсь, это было полезно!


9

Это лучший способ подключиться к вашему Redis.

Сначала проверьте IP-адрес сервера Redis следующим образом.

ps -ef | grep redis

В результате получается что-то вроде «redis 1184 1 0 .... / usr / bin / redis-server 172.xxx:6379.

А затем вы можете подключиться к redis с опцией -h (hostname), как это.

Redis-cli -h 172.xxx


2

В моем случае это был пароль, который содержал некоторые символы вроде ', после его изменения сервер запустился без проблем.



1

У меня была такая же проблема, потому что я использовал неправильный синтаксис в моем файле конфигурации. Я хотел добавить:

maxmemory-policy allkeys-lru

в мой файл конфигурации, но вместо этого только добавил:

allkeys-lru

что, очевидно, помешало Redis проанализировать файл конфигурации, что, в свою очередь, не позволило мне подключиться через cli. Исправление этого синтаксиса позволило мне подключиться к Redis.


1

Если эта homebrew MacOSпроблема связана с отсутствием какого-то разрешения в /usr/local/var/logкаталоге, см. Проблему здесь

Чтобы решить эту проблему, я удалил /usr/local/var/logи переустановил redisbrew reinstall redis


1

Сначала вам нужно запустить / запустить все узлы Redis, используя команду ниже, один за другим для всех файлов conf. @ Примечание: если вы настраиваете кластер, у вас должно быть 6 узлов, 3 будут главными и 3 подчиненными. Redis-cli автоматически выберет главный и подчиненный из 6 узлов с помощью команды --cluster, как показано в моих командах ниже .

[xxxxx@localhost redis-stable]$ redis-server xxxx.conf 

затем беги

[xxxxx@localhost redis-stable]$ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

вывод выше должен быть таким:

    >>> Performing hash slots allocation on 6 nodes...

Второй способ настроить все автоматически: вы можете использовать сценарии utils / create-cluster, чтобы настроить все для вас, например, запуск всех узлов, создание кластера, которое вы следуете https://redis.io/topics/cluster-tutorial

Спасибо


1

Как и Аарон , в моем случае brew services listутверждал, что redis работает, но это не так. Я нашел следующую информацию в моем файле журнала по адресу /usr/local/var/log/redis.log:

4469:C 28 Feb 09:03:56.197 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
4469:C 28 Feb 09:03:56.197 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=4469, just started
4469:C 28 Feb 09:03:56.197 # Configuration loaded
4469:M 28 Feb 09:03:56.198 * Increased maximum number of open files to 10032 (it was originally set to 256).
4469:M 28 Feb 09:03:56.199 # Creating Server TCP listening socket 192.168.161.1:6379: bind: Can't assign requested address

Оказывается, это вызвано следующей конфигурацией:

bind 127.0.0.1 ::1 192.168.161.1

что было необходимо для предоставления моей виртуальной машине VMWare Fusion доступа к серверу redis в macOS, хосту. Тем не менее, если виртуальная машина не была запущена, это связывание недостаточности , вызванной Redis не пускать вообще . Итак, запуск виртуальной машины решил проблему.


1

Попробуй это :

sudo service redis-server restart

Я использую Windows WSL Ubuntu и постоянно получаю ошибки в моем терминале. npm ERR! код ELIFECYCLE npm ERR! errno 1 Так что перепробовал все сверху, особенно в винде не работает. Вот почему попытался перезапустить службу Redis в Ubuntu, и все работает отлично! Вот и все.
Джуне Карло Трогелио,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.