Scan:
public function scanGetKeys($pattern, $count = 100): array
{
$ret = [];
$iterator = 0;
while (true) {
$result = $redis->rawCommand("scan", $iterator, 'match', $pattern, 'count', $count);
if ($result === false) {
break;
}
$ret = array_merge($ret, $result[1]);
$iterator = $result[0];
if ($result[0] == 0) {
break;
}
}
return $ret;
}
Hscan:
public function hScanGetKeyValue($key, $pattern = "*", $count = 100): array
{
$ret = [];
$iterator = 0;
while (true) {
$result = $redis->rawCommand("hscan", $key, $iterator, 'match', $pattern, 'count', $count);
if ($result === false || !isset($result[1]) || empty($temp = $result[1])) break;
foreach($temp as $k => $v){
if($k % 2 == 0) {
$ret[$key][$v] = $temp[$k+1];
}
}
if($result[0] == 0) break;
$iterator = $result[0];
}
return $ret;
}