企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # 发布订阅命令 ![](https://box.kancloud.cn/c6eaa8535d041bbd6ecdb9fa28cb2f82_1116x660.jpg) ## 发布 ~~~ $redis->publish('xy:ele:agent_alert_channel',$num) ~~~ ## 订阅 ~~~ $redis = new \Redis(); $redis->pconnect($host, $port); $redis->auth($redis_auth); //这个是超时时间设置,注意命名空间 $redis->setOption(\Redis::OPT_READ_TIMEOUT, -1); $redis->subscribe('channe频道'', function ($instance, $channel, $message) { $message;//这就是频道传递的值 }); ~~~ # 超时时间 我们常常会在redis订阅60s后,订阅会退出,因为超时了,我们有这2种 ~~~ $redis->setOption(\Redis::OPT_READ_TIMEOUT, -1); 和 ini_set('default_socket_timeout', -1); //最好不要用这个,对其他函数也有影响 ~~~ 对于一些,比如读取超时 只要设置read_write_timeout连接参数为0或-1来解决这个问题。例如 ~~~ $redis = new Predis\Client('tcp://10.0.0.1:6379'."?read_write_timeout=0"); ~~~ 如果您在守护进程式脚本中使用Predis,则应设置read_write_timeout为-1如果要完全禁用超时(此值适用于较早版本和较新版本的Predis)。另外,请记住,您必须通过timeout = 0在redis.conf中设置来禁用Redis的默认超时,否则Redis将在300秒的不活动状态后断开空闲客户端的连接。 如果你正在使用Laravel,在config / database.php中添加'read_write_timeout'=> -1在Redis数据库 # laravel中使用 ~~~ Redis::subscribe(['channe频道'], function($message) { $message;//这就是频道传递的值 }); ~~~