Aqui está uma resposta atualizada para 2015.
Se você puder atualizar o Redis acima de 2.8, o comando SCAN com MATCH funcionará para isso. Antes dessa versão, nem tanto, e NÃO use o comando KEYS exceto em um ambiente de desenvolvimento.
http://redis.io/commands/scan
Exemplo na linha de comando:
$ redis-cli
127.0.0.1:6379> scan 0 match V3.0:*
1) "0"
2) 1) "V3.0:UNITTEST55660BC7E0C5B"
2) "V3.0:shop.domain.com:route"
3) "V3.0:UNITTEST55660BC4A2548"
127.0.0.1:6379> scan 0 match V1.0:*
1) "0"
2) (empty list or set)
127.0.0.1:6379> scan 0 match V3.0:*
1) "0"
2) 1) "V3.0:UNITTEST55660BC7E0C5B"
2) "V3.0:shop.domain.com:route"
3) "V3.0:UNITTEST55660BC4A2548"
Exemplo em PHP:
// Initialize our iterator to NULL
$iterate = null;
// retry when we get no keys back
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
while ($arr_keys = $redis->scan($iterate, 'match:*')) {
foreach ($arr_keys as $str_key) {
echo "Here is a key: $str_key\n";
}
echo "No more keys to scan!\n";
}
Observe que o código php não é testado e da documentação principal, por exemplo, aqui. O código de produção precisaria ser modificado dependendo das chaves necessárias para pesquisar.
Para aqueles no Ubuntu, aqui estão as instruções para atualizar o php5-redis:
- Baixe o pacote 2.2.7 aqui:http://pecl.php.net/package/redis
$ php -i | Suporte grep RedisRedis => versão enabledRedis => 2.2.4
- Siga as instruções no README para phpize, configure, faça a instalação
- Crie um link simbólico para o pacote cli da linha de comando:
cd /etc/php5/cli/conf.d &&sudo ln -s ../../mods-available/redis.ini 20-redis.ini
$ php -i | Suporte grep RedisRedis => versão enabledRedis => 2.2.7