Проблема 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. });