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

redisデータベースの値を検索する

    Redisは、非常に高い頻度でデータにアクセスして更新する必要があり、データ構造(ハッシュ、セット、リスト、文字列、またはソートされたセット)を使用することでメリットが得られるユースケース向けです。非常に具体的なユースケースを満たすために作られています。非常に柔軟な検索などの一般的なユースケースがある場合は、ElasticSearchやSOLRなどのこの目的のために構築されたものの方がはるかに適しています。

    そうは言っても、Redisでこれを行う必要がある場合は、次のようにします(ユーザーが名前と電話番号を共有できると仮定します):

    name:some_name -> set([id1, id2, etc...])
    name:some_other_name -> set([id3, id4, etc...])
    
    phone:some_phone -> set([id1, id3, etc...])
    phone:some_other_phone -> set([id2, id4, etc...])
    
    id1 -> {'name' : 'bob', 'phone' : '123-456-7891', etc...}
    id2 -> {'name' : 'alice', 'phone' : '987-456-7891', etc...}
    

    この場合、すべての名前(接頭辞「name:」)とすべての電話番号(接頭辞「phone:」)に対して新しいキーを作成しています。各キーは、ユーザーに必要なすべての情報を含むIDのセットを指します。たとえば、電話を検索するときは、次のようにします。

    HGETALL 'phone:123-456-7891'
    

    次に、結果をループして、選択した言語でそれぞれの情報(この例では名前)を返します(Redisボックスのサーバー側のLuaでこのすべてを実行すると、さらに高速になり、ネットワークのやりとりを回避できます-必要に応じて):

    for id in results:
        HGET id 'name'
    

    ここでの費用はO(m)になります ここで、m は指定された電話番号を持つユーザーの数です。これは、速度が最適化されているため、Redisでの操作が非常に高速になります。あなたはおそらくそれほど速く進む必要はなく、柔軟な検索を好むので、あなたの場合はやり過ぎでしょうが、これはあなたがそれを行う方法です。



    1. 値でキーを検索

    2. RedHat /CentOS7システムにMongoDB4.2をインストールする方法

    3. mongodbで変更されたドキュメントの通知を受け取る

    4. redisで接続プールを適切に使用するにはどうすればよいですか?