php遍歷redis的所有keys

之前直接使用$this->redis->scan($it, $pattern);取到的都是重複的數據。後來參考網上的解決方法,使用call_user_func_array方式調用就可以了。

    public function scan()
    {

        $it = null;
        $pattern = 'shortlink:*:url';
        $count = 50;

        /* 設置遍歷的特性爲不重複查找,該情況下擴展只會scan一次,所以可能會返回空集合 */
//        $this->redis->setOption(Redis::OPT_SCAN, Redis::SCAN_NORETRY);

        $this->redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY);

//        while (false !== ($keysArr = $this->redis->scan($it, $pattern, $count))) {
        while ($keys = call_user_func_array(array($this->redis, 'scan'), array(&$it, $pattern))) {
            foreach ($keys as $i=>$key) {
                echo $i . '.' . $key . PHP_EOL;
            }
//            dd($it);
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章