これが2015年の更新された回答です。
Redisを2.8より上にアップグレードできる場合は、MATCHを使用したSCANコマンドがこれに対して機能します。そのバージョンより前では、それほど多くはなく、開発環境以外ではKEYSコマンドを使用しないでください。
http://redis.io/commands/scan
コマンドラインの例:
$ 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"
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";
}
phpコードはテストされておらず、たとえばここのコアドキュメントからのものであることに注意してください。ルックアップに必要なキーに応じて、プロダクションコードを変更する必要があります。
Ubuntuを使用している場合は、php5-redisをアップグレードする手順を以下に示します。
- ここから2.2.7パッケージをダウンロードします:http://pecl.php.net/package/redis
-
$ php -i | grep Redis Redis Support => enabled Redis Version => 2.2.4
- READMEの手順に従って、phpize、configure、make install
- コマンドラインcliパッケージのシンボリックリンクを作成します:
cd /etc/php5/cli/conf.d && sudo ln -s ../../mods-available/redis.ini 20-redis.ini
-
$ php -i | grep Redis Redis Support => enabled Redis Version => 2.2.7