在worker里面连接 redis 连接超时

zhou2021

例如:启动一个worker程序。处理redis里面数据。但是 这个redis一直没有接收到数据,redis 就报超时。 过一会有数据上报。发现redis超时了。不在执行数据了。怎么让redis 有数据处理数据,报超时 再次连接 处理数据。

redis类 那些需要调整
namespace dg;

use Exception;

class RedisCache
{

private static $redis;
private static $config = array(
    'host' => '127.0.0.1',
    'port' => 6379,

);

public static function setConfig($config = [])
{
    self::$config = $config;
}

private static function init()
{
    $host = self::$config['host'];
    $port = self::$config['port'];

    $redis = new \Redis();

    if (!$redis->pconnect($host, $port)) {
        exit('redis 连接失败');
    }

    if (isset(self::$config['pass'])) {
        if (!$redis->auth(self::$config['pass'])) {
            exit('redis 密码错误');
        }
    }

    self::$redis = $redis;
}

/**
 * 连接状态判断
 */
private static function ping()
{
    return self::$redis->ping();
}

public static function __callStatic($method, $args)
{
    if (!self::$redis) {
        self::init();
    }

    if (!self::ping()) {
        self::$redis->close();

        self::init();
    }

    return call_user_func_array([self::$redis, $method], $args);
}

}

2689 1 0
1个回答

six

具体报什么错?
我记得redis扩展会自动重连的啊。
不行你就弄个定时器,定时 ping,免得redis链接被关闭。

  • 暂无评论
年代过于久远,无法发表回答
🔝