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.