Рубрики
Uncategorized

Laravel использует redis для отслеживания проблем, возникающих при повторном использовании redis внутри системы

Автор оригинала: David Wong.

Проблема 1. Включение прослушивателя для получения сообщений о времени истечения срока действия связано с тем, что конфигурация не открывается. Решение состоит в том, чтобы открыть параметр notify-keyspace-events Ex в файле конфигурации redis или использовать команду redis-cli в командной строке redis:

config set notify-keyspace-events Ex

Вопрос 2: Исключение подключения перед подключением: Ошибка при чтении строки с сервера

Причина в том, что время связи Redis по умолчанию составляет менее 60 секунд, поэтому установите значение read_write_timeout в 0 в базе данных. php .

"read_write_timeout"=>0

Вопрос 3: Только ОШИБКА (P) ПОДПИСКА/P ОТМЕНА ПОДПИСКИ/ВЫХОД разрешены в этом контексте Это связано с тем, что ссылка Reddit не может использовать другие команды при прослушивании. Необходимо восстановить связь. В начале семестра я использовал новый клиент Predis (), и я продолжал совершать ошибки. Я не знаю, почему. Затем я подумал об использовании кластеров, используя ту же конфигурацию. Установите событие прослушивания в качестве отдельного экземпляра. Конкретная операция заключается в следующем:

// datebase. PHP configuration page
'redis' => [
        'client' => 'predis',
        'default' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,
            "Queue" =>'{default}', //queue site defaults to redis
        ],
        'publisher'=> [//redis subscription listening
                    'host' => env('REDIS_HOST', '127.0.0.1'),
                    'password' => env('REDIS_PASSWORD', null),
                    'port' => env('REDIS_PORT', 6379),
                    'database' => 0,
                    "Read_write_timeout"=> 0, // Long connection do not break
                ],
           ]
// Listen Page
//_ keyevent @*: expired listens for expired messages
$redis = Redis:: connection ('publisher'); // Create a new instance
$redis->psubscribe(['[email protected]*__:expired'], function ($message, $channel) {
   echo $message;
   Redis:: set ('aa','123'); and // so that there is no error. Here we use default, two redis links.
});