php中使用scan替换keys查找redis

`redis`是知名的nosql数据库,

我们在使用redis时经常要查看所有的以某某开头的key

以前经常用`keys test*`

后来看到这样会加重redis负担,更严重时会导致redis宕机

我们该如何正确的查看以`test`打头的`所有key`

方法1

```
connect('localhost', 6379);
$redis->setOption(Redis::OPT_SCAN,Redis::SCAN_RETRY);
$iterator = null;
while ($keys = $redis->scan($iterator, 'test*')) {
foreach ($keys as $key) {
echo $key . PHP_EOL;
}
}
```

方法2

```
connect('localhost', 6379);

$iterator = null;
while (true) {
$keys = $redis->scan($iterator, 'test*');
if ($keys === false) {//迭代结束,未找到匹配pattern的key
return;
}
foreach ($keys as $key) {
echo $key . PHP_EOL;
}
}
```

    A+
发布日期:2020年10月24日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: