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对应的是值
}
}
}
}