Неустранимая ошибка: необработанное исключение "RedisException" с сообщением "сервер Redis ушел"
Одно из моих приложений вдруг начало выдавать ошибку:
Fatal error: Uncaught exception 'RedisException' with message 'Redis server went away' in /var/www/_slim/_core/system/generator.001.php:133 Stack trace: #0 /var/www/_slim/_core/system/generator.001.php(133): Redis->auth('77B1BFFBC0378DF...') #1 /var/www/_slim/_core/system/generator.007.php(144): Generator001->r6_redis_start('R') #2 /var/www/_slim/_core/system/generator.007.php(26): Generator007->HarvestRedis() #3 /var/www/_slim/_core/system/generator.shopping.php(14): Generator007->Generator007() #4 /var/www/_slim/_core/system/generator.last.php(43): Generator008->Generator008() #5 /var/www/_slim/site/home/php/index.php(16): GeneratorLast->GeneratorLast() #6 /var/www/index.php(96): Gui->Gui()
#7 {main} thrown in /var/www/_slim/_core/system/generator.001.php on line 133
Я переустановил redis-server
но пока не повезло. Какие-либо предложения?
6 ответов
Ну, как описывает само исключение, ваш сервер Redis не работает. Попробуйте выполнить следующие действия: 1. Проверьте, содержит ли сервер, на котором работает экземпляр Redis, какой-либо брандмауэр (возможно, iptables?) 2. Перейдите на веб-сервер (на котором запущен ваш php) и попробуйте подключиться к серверу redis через telnet 3. См. если настроенный хост / IP правильный. Возможно, что-то изменилось в сетевых настройках сервера Redis.
Может быть, не ответ на конкретный вопрос, но может помочь новичкам в Redis, которые приходят сюда, погуглив Исключение.
Вы также получите это исключение, если создадите экземпляр Redis и начнете вызывать на нем методы без предварительного подключения к серверу Redis, вызвав
$redis->connect('localhost')
Аргументы для вызова, очевидно, должны быть скорректированы, если Redis не является локальным хостом, настроен для прослушивания на другом порту, установки пароля и т. Д.
У меня была проблема с подключением к Redis
Мне удалось решить это, изменив двоеточие до запятой
$redis->connect('localhost:6379');
от этого к этому
$redis->connect('localhost', 6379);
Если вы работаете в локальной среде /dev, убедитесь, что запущена служба Redis.
Вы можете проверить, работает ли ваша локальная служба, открыв команду Redis Client. Если вы используете MAC, откройте командную строку и введите redis-cli.
Если ваш сервер работает, вы должны увидеть:
redis 127.0.0.1:6379>
В моем случае я забыл запустить службу Windows, поэтому все, что мне нужно было сделать: открыть services.msc, запустить службу Redis Server.
Моя проблема заключалась в том, что я использовал Docker Compose и мне нужно было использовать имя контейнера вместо «localhost».
// Connect to the Redis Docker created server. 'redis' refers to the
// 'redis' container in the docker-compose.yml file.
$redis->connect('redis');
// docker-compose.yml
redis:
image: redis:alpine
volumes:
- redis-data:/data
ports:
- ${FORWARD_REDIS_PORT:-6379}:6379
healthcheck:
test: ["CMD", "redis-cli", "ping"]
networks:
- default
У меня была такая же проблема при интеграции моего программного обеспечения с локальной установкой Redis. Оказалось, что имя хоста «localhost» не было разрешено (материал работал в контейнере докеров, который этого не знал). Поменял на обычный loopback IP "127.0.0.1" в конфиге клиента и прокатывает.