Неустранимая ошибка: необработанное исключение "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" в конфиге клиента и прокатывает.

Другие вопросы по тегам