Redis は、文字列、ハッシュ テーブル、リスト、セット、順序付きセットなどを含むさまざまなデータ構造をサポートする高性能のキー/値ストレージ システムです。同時に、Redis は文字列データに対する正規表現の一致および置換操作もサポートしているため、PHP アプリケーションの開発において柔軟性が高く便利です。
PHP アプリケーションで正規表現操作に Redis を使用するには、まず phpredis 拡張機能をインストールする必要があります。この拡張機能は、Redis サーバーと通信するための API を提供します。インストール方法は、ターミナルで次のコマンドを実行することで実現できます。
pecl install redis
設定完了後、Redis サーバーと PHP アプリケーションを起動した後、正規表現を使用して Redis データベースを操作できるようになります。 Redis の 5 つの正規表現操作を次に示します。
Redis コマンド: KEYS pattern
このコマンドは、指定されたパターンに一致するすべてのキー名を返すことができます。パターン pattern には次の特殊文字を含めることができます。
# の任意の文字 たとえば、次のコマンドを使用すると、「user」で始まるすべてのキーを取得できます:
$redis->keys('user*');
Redis コマンド: GET key
このコマンドは、指定されたキーに対応する文字列値を返します。キーが存在しない場合は nil を返します。たとえば、次のコマンドを使用して、「username」という名前のキーの値を取得できます:
$value = $redis->get('username');
Redis コマンド: SET key value [EX [秒] [ PX ミリ秒] [NX|XX]
このコマンドを使用して、指定したキーの値を設定できます。キーがすでに存在する場合、元の値は上書きされます。このうち、オプションパラメータの秒とミリ秒はキー値の有効期限を表し、単位はそれぞれ秒とミリ秒です。 NX と XX は相互に排他的なオプションです。キー値を設定する場合、NX オプションを指定するとキーが存在しない場合にのみ設定することを意味し、XX オプションを指定するとキーがすでに存在する場合にのみ設定することを意味します。
たとえば、次のコマンドを使用して、「username」という名前のキーの値を「redis」に設定し、有効期限を 600 秒に設定できます:
$redis->set('username', 'redis', 600);
Redis コマンド:SCAN カーソル [MATCH パターン] [COUNT カウント]
このコマンドは、データベース内のすべてのキー名、オプションのパラメーターを反復するために使用されます。 pattern と count KEYS コマンドと同様に、指定されたパターンでキー名を照合し、返されるキー名の数を設定するために使用できます。 1 回の操作で返されるキー名が多すぎるのを避けるために、このコマンドは反復操作を複数回に分割し、各操作でキー名の一部を返します。各キー名はカーソルとともに返され、次の反復操作でパラメータとして SCAN コマンドに渡すことができます。
たとえば、次のコマンドを使用して、「user」で始まるすべてのキー名を取得できます:
$cursor = 0; $pattern = 'user*'; $keys = []; do { $result = $redis->SCAN($cursor, 'MATCH '.$pattern); $cursor = $result[0]; $keys = array_merge($keys, $result[1]); } while ($cursor != 0);
Redis コマンド:EVAL script numkeys key [key ...] arg [arg ...]
このコマンドはカスタマイズされた Lua スクリプトを実行でき、文字列値の正規表現は次のように実現できます。 Lua スクリプトの置換操作。このうち、スクリプト パラメータは Lua スクリプトのコード、キーは 1 つ以上のキー名で、Lua スクリプト内でこれらのキー名を使用して、対応する値を取得および変更できます。 arg は、他のパラメータを Lua スクリプトに渡すために使用できるオプションのパラメータです。
以下は、Lua スクリプトを使用して置換プロセスを実装する例です。
local key = KEYS[1] local pattern = ARGV[1] local replacement = ARGV[2] redis.call('SET', key, string.gsub(redis.call('GET', key), pattern, replacement))
このスクリプトは、文字列値の特定のコンテンツをキー名 key に置換するために使用できます。スクリプト内のパターンと置換パラメータは、それぞれ正規表現と置換文字列を表します。文字列置換操作を実行するには、string.gsub() 関数を使用します。
たとえば、次のコマンドを使用して上記の Lua スクリプトを実行し、「username」という名前のキー値のすべての数字を「」に置き換えることができます。
$redis->eval($script, ['username'], ["/%d+/", '']);
以上がPHP アプリケーションでの Redis 正規表現操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。