Redis管道pipeline上傳批量數據

/**
     * @param $data
     * @throws Exception
     */
    public function redisMultiPipeline($data)
    {
        //實例化redis
        $redis = new Redis();
        //連接
        $redis->connect(Configure::read('redis.cache.host'), Configure::read('redis.cache.port'));
        if (!is_null(Configure::read('redis.cache.password'))) {
            $redis->auth(Configure::read('redis.cache.password'));
        }
        $redis->select(Configure::read('redis.cache.database'));
        $redis->pipeline();    //開啓管道
        if (!$redis) {
            throw new Exception('redis連接失敗!', 1);
        }
        $redis->setOption(Redis::OPT_PREFIX, 'CPU_TASK:');    //管道數據批量設置前綴
        foreach ($data as $key => $datum) {
            $redis->set($key, $datum);    //循環set值,都將被塞進管道中
        }
        $redis->exec();    //客戶端提交數據到Redis處理,1次網絡耗時加n次命令耗時
        $redis->close();
    }

//註釋:如果不開啓管道,循環set redis數據,那麼是n次網絡耗時加n次命令耗時,這樣網絡耗時就增加了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章