我以前曾使用该KEYS命令在Redis数据库中搜索与特定模式匹配的键。从Redis 2.8开始,该SCAN命令似乎比它更可取,KEYS因为它返回一个迭代器,而不是立即扫描整个键空间。
KEYS
SCAN
我正在使用Predis > = 0.8.5,它应该支持该SCAN命令的PHP迭代器。Predis没有很多文档,所以我想知道如何将以下KEYS命令转换为SCAN对应的命令:
$client->keys($pattern)
我尝试了以下方法:
$client->scan('MATCH', $pattern);
哪种方法有效-但不会返回本地PHP迭代器。使用Predis的内置迭代器支持真的很好。
我在Predis示例目录中找到了如何做。
要用于SCAN搜索数据库中的匹配键,只需使用以下Predis\Collection\Iterator\Keyspace类:
Predis\Collection\Iterator\Keyspace
use Predis\Collection\Iterator; $client = ...; $pattern = 'foo*'; foreach (new Iterator\Keyspace($client, $pattern) as $key) { ... }
显然,Predis在Predis\Collection\Iterator每个返回迭代器的命令中都有一个迭代器类:
Predis\Collection\Iterator
Keyspace
HashKey
HSCAN
SetKey
SSCAN
SortedSetKey
ZSCAN
ListKey
LRANGE