php操作redis报错Redis::__set_state(array( 'socket' => NULL, ))

原因:

redis使用Redis::PIPELINE方式可以提升命令的执行速度,但因为前一步流程没有调用exec(),后续代码就继续用redis对象操作。如下代码,如果$cd1为false,则$res2返回标题报错

            $pipe = $redis->multi(Redis::PIPELINE);
            foreach ($for as $bar) {
               $redis->get($bar);
            }
            if($cd1){
                $res1= $pipe->exec();
            }
            
            $res2 = $redis->get('test');

解决:

检查代码逻辑,确保所有$redis->multi(Redis::PIPELINE);方法都有与之对应的$pipe->exec();方法执行。

posted @ 2022-03-02 22:10  阿飞afei  阅读(79)  评论(0编辑  收藏  举报