Här är ett uppdaterat svar för 2015.
Om du kan uppgradera Redis över 2.8, kommer SCAN-kommandot med MATCH att fungera för detta. Före den versionen, inte så mycket, och använd INTE kommandot KEYS förutom i en utvecklingsmiljö.
http://redis.io/commands/scan
Exempel på kommandoraden:
$ 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"
Exempel i 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";
}
Obs, php-koden är inte testad och från kärndokumentationen till exempel här. Produktionskoden skulle behöva ändras beroende på vilka nycklar som behövs för att slå upp.
För dem på Ubuntu här är instruktionerna för att uppgradera php5-redis:
- Ladda ner 2.2.7-paketet här:http://pecl.php.net/package/redis
$ php -i | grep RedisRedis Support => enabledRedis Version => 2.2.4
- Följ instruktionerna i README för att phpize, konfigurera, installera
- Skapa en symbollänk för kommandorads-cli-paketet:
cd /etc/php5/cli/conf.d &&sudo ln -s ../../mods-available/redis.ini 20-redis.ini
$ php -i | grep RedisRedis Support => enabledRedis Version => 2.2.7