public function get_redis()

in common/file/FSOFRedis.php [92:136]


    public function get_redis()
    {
        if (!isset($this->m_redis))
        {
            $hosts_count = count($this->hosts);
            $retry = $this->retry_count;
            $rand_num = rand() % $hosts_count;
            $ret = false;
            do{
                try{
                    $redis_cli = new \Redis();
                    if($this->connect_type == FSOFConstants::FSOF_SERVICE_REDIS_CONNECT_TYPE_TCP)
                    {
                        $node = $this->hosts[$rand_num];
                        $ret = $redis_cli->connect($node[0],$node[1],$this->connect_timeout);
                        $redis_cli->setOption(\Redis::OPT_READ_TIMEOUT, $this->read_timeout);
                        $rand_num = ($rand_num + 1)%$hosts_count;
                        if (!$ret)
                        {
                            $this->logger->warn("connect redis failed[{$node[0]}:{$node[1]}]");
                        }
                    }else{
                        $ret = $redis_cli->connect("/var/fsof/redis.sock",-1,FSOFConstants::FSOF_SERVICE_REDIS_PORT,$this->connect_timeout);
                    }
                    if($ret)
                    {
                        break;
                    }
                }catch (\Exception $e){
                    $this->logger->error('connect redis excepiton:'.$e->getMessage().', errno:' . $e->getCode());
                }
            }while($retry-- > 0);
            if($ret)
            {
                $this->m_redis = $redis_cli;
            }
            else
            {
                $this->logger->error('connect redis failed:|errno:' . $redis_cli->getLastError());
                throw new \Exception("连接redis异常");
            }
        }

        return $this->m_redis;
    }