Я ранее использовал KEYS
Команда для поиска ключей, соответствующих определенному шаблону в моей базе данных Redis. Поскольку Redis 2.8, SCAN
команда кажется предпочтительнее KEYS
так как он возвращает итератор вместо сканирования всего пространства ключей одновременно.
я использую Predis > = 0.8.5, которая должна поддерживать итераторы PHP для SCAN
команда. Предис не имеет много документации, поэтому мне интересно, как перевести следующее KEYS
Команда это SCAN
копия:
$client->keys($pattern)
Я пробовал следующее:
$client->scan('MATCH', $pattern);
Какой тип работает — но он не возвращает нативный PHP-итератор. Было бы неплохо использовать встроенную поддержку Predis итератора.
Я нашел, как это сделать в Каталог примеров Predis.
Использовать SCAN
для поиска подходящих ключей в базе данных вы просто используете Predis\Collection\Iterator\Keyspace
учебный класс:
use Predis\Collection\Iterator;
$client = ...;
$pattern = 'foo*';
foreach (new Iterator\Keyspace($client, $pattern) as $key) {
...
}
По-видимому, у Predis есть класс итераторов в Predis\Collection\Iterator
для каждой из команд, возвращающих итераторы:
Может быть, это полезно для других новичков в Predis, и вы пришли из PHP / MySQL, как я, вы можете использовать это:
foreach (new Iterator\HashKey($client, $pattern) as $index => $value) {
...
}
Когда вы ранее сгенерировали набор данных массива с $client->hmset($index, $array)
,