我之前使用该KEYS命令来搜索与Redis数据库中的某个模式匹配的密钥.从Redis 2.8开始,SCAN命令似乎是首选,KEYS因为它返回迭代器而不是一次扫描整个键空间.
我正在使用Predis > = 0.8.5,它应该支持该SCAN命令的PHP迭代器.Predis没有很多文档,所以我想知道如何将以下KEYS命令转换为它的SCAN对应物:
$client->keys($pattern)
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法:
$client->scan('MATCH', $pattern);
Run Code Online (Sandbox Code Playgroud)
哪种工作 - 但它不返回本机PHP迭代器.使用Predis的内置迭代器支持会非常好.
And*_*zlo 25
我在Predis示例目录中找到了如何做到这一点.
要用于SCAN搜索数据库中的匹配键,只需使用Predis\Collection\Iterator\Keyspace该类:
use Predis\Collection\Iterator;
$client = ...;
$pattern = 'foo*';
foreach (new Iterator\Keyspace($client, $pattern) as $key) {
...
}
Run Code Online (Sandbox Code Playgroud)
显然,Predis Predis\Collection\Iterator为每个返回迭代器的命令都有一个迭代器类:
Keyspace 对于 SCANHashKey 对于 HSCANSetKey 对于 SSCANSortedSetKey 对于 ZSCANListKeyfor LRANGE- 这并不是真正使用Redis迭代器,但LRANGE无论如何它都是一个很好的接口.| 归档时间: |
|
| 查看次数: |
7741 次 |
| 最近记录: |