I have previously used the KEYS command to search for keys matching a certain pattern in my Redis database. Since Redis 2.8, the SCAN command seems to be preferred over KE
I found how to do it in the Predis examples directory.
To use SCAN
to search for matching keys in a database, you simply use the Predis\Collection\Iterator\Keyspace
class:
use Predis\Collection\Iterator;
$client = ...;
$pattern = 'foo*';
foreach (new Iterator\Keyspace($client, $pattern) as $key) {
...
}
Apparently Predis has an iterator class in Predis\Collection\Iterator
for each of the commands that return iterators:
Keyspace
for SCANHashKey
for HSCANSetKey
for SSCANSortedSetKey
for ZSCANListKey
for LRANGE - This doesn't really use Redis iterators, but it's a nice interface to LRANGE
anyway.Maybe this is helpful for other Predis beginners and you're coming from a PHP/MySQL background like me you can use this:
foreach (new Iterator\HashKey($client, $pattern) as $index => $value) {
...
}
When you previously generated an array dataset with $client->hmset($index, $array)
.