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