sql >> データベース >  >> NoSQL >> Redis

Redisを使用したマルチパラメーターマッチファインダー

    ここでやろうとしているのは転置インデックスです。

    列ごとに、「セット」にマップします。次に、セットを交差させて結果を得ることができます。

    したがって、APPLE: RED ROUND FRUIT 次の挿入にマップされます:

    SADD p1:RED APPLE
    SADD p2:ROUND APPLE
    SADD p3:FRUIT APPLE
    

    次に、* ROUND FRUITをクエリするとします。 、私はします:

    SINTER p2:ROUND p3:FRUIT
    

    このコマンドは、p2:ROUNDの項目の共通部分を取得しています セットとp3:FRUIT セットする。これにより、ROUNDであるすべてのアイテムが返されます およびFRUITp1を気にしない です。

    その他の例:

    SMEMBERS p1:GREEN
    SINTER p1:RED p2:ROUND p3:FRUIT
    SUNION p1:RED p1:GREEN
    

    交差演算はO(N*M)であるため、上記の回答では計算能力を使用します。 。これを行う方法は、メモリを大量に消費しますが、インデックスを効果的に事前計算するため、取得が高速になります。

    プロパティの組み合わせごとに、セットを格納するキーを作成します。

    したがって、APPLE: RED ROUND FRUIT 次の挿入にマップされます:

    SADD RED:ROUND:FRUIT APPLE
    SADD :ROUND:FRUIT APPLE
    SADD RED::FRUIT APPLE
    SADD RED:ROUND: APPLE
    SADD RED:: APPLE
    SADD :ROUND: APPLE
    SADD ::FRUIT APPLE
    SADD ::: APPLE
    

    次に、クエリを実行するには、それぞれのキーにアクセスするだけです。例:* ROUND FRUIT 単純に

    SMEMBERS :ROUND:FRUIT
    

    明らかに、これは、多くのディメンションがある場合、メモリの観点からはまったく拡張性がありませんが、結果を取得するのは非常に迅速です。




    1. mongoのサブドキュメントインデックス

    2. PythonとMongoDBデータベースの開発

    3. spring sessionredis'「springSessionRepositoryFilter」という名前のBeanが定義されていません'

    4. JavaMongoDriverを使用してMongoDBjsスクリプトを実行するにはどうすればよいですか