PHP Redis hScan使用

2,240 阅读1分钟

php 使用redis hScan

在遍历hash结构的redis数据时,通常我们会用hGetAll这个命令来获取整个key对应的数据,而且这个返回值是一个数组结构,通过遍历数组很好处理。当这个key对应的数据量超过5万时(具体最高值没有测试过),这时我们就要使用hScan来遍历获取

根据所引入包的不同使用方法也有所异同

php-redis

    $it = null; /* Initialize our iterator to NULL */
    if ($redisObj->exists($miKey)) {
        $times = 0;
        while ($contents = $redisObj->hScan($miKey, $it, '', 500)) {
            foreach ($contents as $key=>$content) {}
        }
    }

yii2-redis (比较变态)

     if($redis->EXISTS($key)){
            while ($contents = $redis->HSCAN($key,$it,$num)) {
                $num=$contents[0];//根据这个返回值停止遍历
                if($num==0){
                    break;
                }
                foreach ($contents[1] as $key=>$channelName) {
                    if($key/2==0) {
                         //偶数key对应的是hash key
                    }else{
                        //奇数key对应的是值
                    }
                }
            }
        }