この記事では、Redis がリレーショナル データを保存する方法と、一致、範囲、ファジー クエリの方法を例とともに説明します。
1. リレーショナル データのストレージ
Staff オブジェクトを例に挙げます。リレーショナル データベースまたは GridGain のようなメモリ グリッド製品では (最下層は H2 データベースのメモリ モード ストレージを使用します) )、オブジェクトのデータをテーブル形式で保存します。メモリ グリッドはオブジェクトに基づいてキャッシュされるため、シリアル化されたバイナリや JSON 形式などのオブジェクト全体のエンコーディングを保存して、アプリケーションに直接返すことができるように、追加の列 (スタッフ列) が必要になります。逆シリアル化。
Redis では、ID を一意の識別子として使用し、キーと値、ハッシュ、zSet の 3 つのデータ構造を使用して保存できます。 Key-Value は ID とオブジェクト全体を保存し、ID 範囲を決定した後、それに基づいてオブジェクトをクライアントに返すことができます。
2. マッチングクエリ
ハッシュテーブルの hget または hmget を使用すると dept='IT' または dept in ('IT', 'QA) を実現できます' ) これは、単一値または複数値の完全一致クエリです。 ID リストを取得した後、Key-Value をクエリしてオブジェクトを取得します。
3. 範囲クエリ
年齢を zSet のスコアとして保存し、その値が ID であるため、zSet の zrangeByScore メソッドを使用して、範囲内のスコアの値を取得できます。一定の間隔。
4. ファジー クエリ
Redis 2.8.9 以降、zSet には非常に便利なメソッド zrangeByLex が追加されました。スコアは 0 として保存され、値は name:id の形式になります。 zrangeByLex を使用して、一定の間隔内の文字の値を取得します。たとえば、zrangeByLex 名 [A, (F、Allen、Aaron、Carter をクエリできます。
5. ページング クエリ
同時に、zrangeByLex はページング クエリと構文もサポートします。
6. 制限事項
上記の例は、いくつかの一般的なクエリが Redis でどのように実装されるかを示していますが、結局のところ、Redis は単なるキーと値のストレージであるため、
例:
1) 年齢>25 かつ名前が「A%」など、複数の条件を含むクエリを実装することはできません。その場合、複数のコマンドが必要になり、和集合または交差を計算する必要があります。
2) 中国語のあいまいクエリはさらに困難です。
redis の詳細については、redis 入門チュートリアル 列に注目してください。
以上がRedis のリレーショナル クエリの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。