Redis は、PHP を含むさまざまな言語やアプリケーションで広く使用されている、一般的に使用されるメモリ内データベースです。 PHP は広く使用されている Web プログラミング言語であり、開発者が PHP を使用して Web アプリケーションを作成する場合、多くの場合、外部データ ストレージを使用して、このデータに迅速にアクセスする必要があります。 Redis は高速な読み取りおよび書き込み機能を備えているため、非常に優れた選択肢となります。この記事では、PHP アプリケーションでの Redis の使用方法と、データベースのインデックス作成に Redis を使用する方法を紹介します。
1. PHP での Redis の使用
PHP で Redis を使用する場合、PECL 拡張機能 redis または Predis などのサードパーティ ライブラリを通じて接続できます。 PECL 拡張機能 redis は、PHP で「sudo pecl install redis」コマンドを使用してインストールできます。 PECL 拡張機能を使用できない場合は、Predis などのライブラリを使用して Redis に接続できます。
Redis を使用すると、データの保存と読み取りが高速になります。その理由の 1 つは、Redis はすべてのデータをメモリに保存し、メモリのアクセス速度がディスクのアクセス速度よりもはるかに速いためです。 Redis はキーと値のペアのストレージもサポートしているため、キーワードを通じて必要なデータを迅速にクエリできます。
2. PHP の Redis データ インデックス
PHP アプリケーションでは、データの保存と管理にデータベースを使用する必要があります。データベースが「データ ウェアハウス」と呼ばれる理由は、データの保存と管理に適した構造を提供するためです。一部のデータに迅速にアクセスする必要がある場合、最良の方法はインデックスを使用することです。リレーショナル データベースでは、通常、B ツリーなどのデータ構造を使用してインデックスを実装できますが、非リレーショナル データベースでは、Redis を使用してインデックスを実装できます。
Redis はメモリに巨大なハッシュ テーブルを保存できるため、データの保存とインデックス付けに使用できます。一般的に使用される 2 つの方法を以下に紹介します。
Redis のハッシュ データ構造は、キーと値のペアのコレクションであり、PHP の配列に非常によく似ています。 Redis のハッシュ データ構造を使用して、PHP アプリケーションにインデックス付けを実装できます。すぐにクエリする必要があるデータをハッシュ テーブルに保存し、キーワードを使用してクエリを実行するだけです。たとえば、次の PHP コードはハッシュ テーブルを保存します。
$redis = new Redis(); $redis->connect('127.0.0.1', 6379); $user = [ 'name' => 'Zhang San', 'age' => 23, 'sex' => 'Male' ]; $redis->hMSet('user:1', $user);
上記のコードは、「user:1」のハッシュ テーブルをダウンロードします。このうち、名前、年齢、性別は属性であり、それぞれが値に対応する。上の例では、「Zhang San」という名前のユーザーを保存し、彼の年齢を 23 歳、性別を男性に設定します。すべてのプロパティと値は $redis->hMSet() に保存されます。次に、特定のユーザーを検索する必要がある場合は、次のコードを使用します。
$result = $redis->hGetAll('user:1');
上記の PHP コードは、「user:1」という名前のハッシュ テーブル内のすべての要素を取得します。属性に基づいて単一の値を取得することもできます。例:
$name = $redis->hGet('user:1', 'name');
上記の PHP コードは、「user:1」という名前のハッシュ テーブル内の「name」という名前の属性の値を取得します。
Redis の順序付きセット データ構造は、データを値とスコアのペアのコレクションとして保存するハッシュ テーブルとは異なります。データはスコアに基づいて並べ替えることができ、コレクションは並べ替え可能であるため、インデックスの実装に使用できます。
たとえば、一連の画像ファイルがあり、各画像に名前と日付スタンプがあるとします。順序付けされたコレクションを使用してこれらの画像ファイルを保存できます。 PHP コードのサンプルを次に示します。
$file1 = [ 'name' => 'image1.jpg', 'date' => '2022-01-01' ]; $file2 = [ 'name' => 'image2.jpg', 'date' => '2022-01-02' ]; $redis->zAdd('files', 1, json_encode($file1)); $redis->zAdd('files', 2, json_encode($file2));
上記のコードは、「files」と呼ばれる順序付けされたコレクションをダウンロードし、「image1.jpg」と「image2.jpg」をコレクションに追加します。各ファイルはスコアが付加された JSON 文字列として表され、ファイル 'file2' は 'file1' よりも高いスコアを持ちます。
日付スタンプやスコアに基づいて画像ファイルをすばやく取得できます。例:
$results = $redis->zRevRangeByScore('files', '+inf', '-inf', array('withscores' => TRUE, 'limit' => array(0, 100)));
上記の PHP コードは、「files」内のすべてのファイルのリストを取得します。 zRevRangeByScore を使用して、スコアに基づいてファイル リストを取得します。
3. 概要
Redis には、高速な読み取りと書き込み、効率的なストレージ、およびキーと値のペアのサポートという特徴があります。 PHP アプリケーションにデータを迅速に保存してアクセスする必要がある場合は、間違いなく Redis が良い選択です。さらに、Redis は、PHP アプリケーションでインデックスを実装するために使用できるハッシュ テーブルや順序付きセットなどのデータ構造をサポートします。 PHP アプリケーションを開発する場合、データに迅速にアクセスする必要がある場合は、Redis を使用してインデックスを実装することをお勧めします。
以上がPHP アプリケーションの Redis データベース インデックスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。