问题一:开启监控收不到过期时间消息。原因是配置没有启用。解决办法是在redis配置文件或者redis命令行redis-cli中开启notify-keyspace-eventsEx使用命令:configsetnotify-keyspace-eventsEx问题2:PredisConnectionConnectionException:Errorwhilereadinglinefromtheserver原因就是Redis默认连接时间小于60秒,在database.php中将read_write_timeout设置为0即可。"read_write_timeout"=>0问题3:ERRonly(P)SUBSCRIBE/(P)UNSUBSCRIBE/QUITallowedinthiscontext这是因为当一个Redis链接使用监听时,不能使用其他命令。需要重新建立链接。期初用new\Predis\Client(),一直报错,也不知道为什么。然后我想到了使用集群,使用相同的配置。将侦听器事件设置为单独的实例。具体操作如下://datebase.php配置页面'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}',//queuesiteDefaultredis],'publisher'=>[//redis订阅监控'host'=>env('REDIS_HOST','127.0.0.1'),'password'=>env('REDIS_PASSWORD',null),'port'=>env('REDIS_PORT',6379),'database'=>0,"read_write_timeout"=>0,//不断开长连接],]//监听页面//__keyevent@*__:expiredlisteningexpiredMessage$redis=Redis::connection('publisher');//新建实例$redis->psubscribe(['__keyevent@*__:expired'],function($message,$channel){echo$message;Redis::set('aa','123');//这个不会报错,这里使用默认,就是两个redis链接。});
