ホームページ  >  記事  >  バックエンド開発  >  PHP アプリケーションでの Redis 正規表現操作

PHP アプリケーションでの Redis 正規表現操作

王林
王林オリジナル
2023-05-16 17:31:36843ブラウズ

Redis は、文字列、ハッシュ テーブル、リスト、セット、順序付きセットなどを含むさまざまなデータ構造をサポートする高性能のキー/値ストレージ システムです。同時に、Redis は文字列データに対する正規表現の一致および置換操作もサポートしているため、PHP アプリケーションの開発において柔軟性が高く便利です。

PHP アプリケーションで正規表現操作に Redis を使用するには、まず phpredis 拡張機能をインストールする必要があります。この拡張機能は、Redis サーバーと通信するための API を提供します。インストール方法は、ターミナルで次のコマンドを実行することで実現できます。

pecl install redis

設定完了後、Redis サーバーと PHP アプリケーションを起動した後、正規表現を使用して Redis データベースを操作できるようになります。 Redis の 5 つの正規表現操作を次に示します。

1. 指定されたパターンに一致するキーを取得する

Redis コマンド: KEYS pattern

このコマンドは、指定されたパターンに一致するすべてのキー名を返すことができます。パターン pattern には次の特殊文字を含めることができます。

  • *: 任意の数の文字と一致します
  • ?: 任意の 1 文字と一致します
  • []: 指定された文字と一致します文字セット

# の任意の文字 たとえば、次のコマンドを使用すると、「user」で始まるすべてのキーを取得できます:

$redis->keys('user*');

2. Get指定されたキーの対応するキー 値

Redis コマンド: GET key

このコマンドは、指定されたキーに対応する文字列値を返します。キーが存在しない場合は nil を返します。たとえば、次のコマンドを使用して、「username」という名前のキーの値を取得できます:

$value = $redis->get('username');

3. Set key value

Redis コマンド: SET key value [EX [秒] [ PX ミリ秒] [NX|XX]

このコマンドを使用して、指定したキーの値を設定できます。キーがすでに存在する場合、元の値は上書きされます。このうち、オプションパラメータの秒とミリ秒はキー値の有効期限を表し、単位はそれぞれ秒とミリ秒です。 NX と XX は相互に排他的なオプションです。キー値を設定する場合、NX オプションを指定するとキーが存在しない場合にのみ設定することを意味し、XX オプションを指定するとキーがすでに存在する場合にのみ設定することを意味します。

たとえば、次のコマンドを使用して、「username」という名前のキーの値を「redis」に設定し、有効期限を 600 秒に設定できます:

$redis->set('username', 'redis', 600);

4. すべてのキーが一致する指定されたパターン 名前

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);

5. 正規表現置換文字列値

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。