StackExchangeRedisコレクションでの検索

トム

AzureでホストされているRedisの使用を検討しています。StackExchange nugetを使用した最初の使用例は、顧客ベースに対する検索です。これは当初約10,000人の顧客ですが、時間の経過とともに成長します。

顧客は、次のような特定の検索モデルになります。

    {
     "Id": 123,
     "Name": "Bob Smith",
     "Age": 72,
     "Postcode": "AB123EF",
     "Email": "[email protected]",
     "Telephones": [
        "07710123456", 
        "01453123456"
      ]
    }

私の理解では、大きなblobオブジェクトをRedisに入力することは避けるべきであるため、リストを1つのオブジェクトとして保存することはお勧めできません。そのため、List *関数を使用して、各アイテムをキーの下に格納し、データをシリアル化しました。

最初の作業は次のようになります。

    var tasks = new List<Task>();

    foreach (var customer in customers)
    {
     tasks.Add(db.ListLeftPushAsync(_key, JsonConvert.SerializeObject(customer)));
    }

    await Task.WhenAll(tasks).ConfigureAwait(true);

これはすべて期待どおりに機能します。ある程度の最適化があると確信していますが、問題ないようです。

それは基本的に私たちに情報を照会するという問題を残しました。Redisがすべてを文字列として保存することは理解していますが、リストは文字列ではなくRedisオブジェクトであるため、リストを検索する方法がわかりません。したがってListRange(_key).Where(c => c.Contains("Bob"))、たとえば使用することはできません

私たちのアプローチがこれに関して間違っているか、私がちょうど欠けている方法があるかどうか私に知らせてください。

ピーターパン

RediSearch@GuyKorlandが、redisに基づくカスタム検索エンジンを実現するのではなく、のような成熟した製品を使用する必要があると言ったことに完全に同意します

ただし、redisの知識に基づいて、redisのデータ構造を使用して簡単な検索エンジンを実装する方法を簡単に紹介できてとてもうれしいです。

まず、サンプル顧客のような顧客データをredisに保存する方法。ご存知のとおり、redisはメモリ上のKVデータベースであるため、以下のようにHash、一意Idのプレフィックスを使用して、オブジェクトまたはjsonデータをキーを使用してredis構造としてフラットに保存できます。

CUSTOM#123 => 
  Id => 123
  Name => Bob Smith
  Age => 72,
  Postcode => AB123EF
  Email => [email protected]
  Telephones#0 => 07710123456
  Telephones#1 => 01453123456

次に、以下のように、redisListまたはSorted Setstructureを使用して、オブジェクトクラスのすべてのプロパティのインデックスを作成します。

たとえば、ListforNameAgeプロパティを使用ます。アイデアは、シンボル同様にオブジェクトの値をNAME連結するようなプレフィックスを使用して、redisキーを構築し、その値をredis要素として格納することです。NameBob#IdList

\\ To build `NAME` index for all objects contains `Bob`, `Smith` and `Bob Smith` in the `Name` propertory
NAME#Bob => 123, ... 
NAME#Smith => 123, ...
NAME#Bob Smith => 123, ...
\\ Do the same operation above to build `AGE` index
AGE#72 => 123, ...

最後に、コマンド使用して顧客のリストを正確に取得するコマンド使用して顧客のリストをBobあいまいに取得することにより、プレフィックスが付いたredisキーを検索できます。その後値を持つプロパティを含むこれらの顧客データを継続的に取得できます。顧客のリストを並べ替える場合は、リストの結果を並べ替える代わりに使用する必要があります。NAME#GET NAME#BobIdkeys NAME#Bob*IdNameBobIdSorted SetListId

私はまだ、などのredisに基づいた成熟した製品を使用することをお勧めしますRediSearch。これは、ニーズを迅速に実現するのに役立ちます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

CloudFirestoreコレクションのパターンで検索

分類Dev

mongodbで複数のコレクションを検索する

分類Dev

mongodbで複数のコレクションを検索する

分類Dev

mongoosasticで複数のコレクションを検索する

分類Dev

部分検索コレクションjava

分類Dev

複数のコレクションで検索マングース

分類Dev

FirebaseFirestoreのコレクションでフィールドを検索する

分類Dev

idの配列で同じコレクションを検索する方法は?

分類Dev

SpringMongoTemplate-コレクション内の正規表現で検索

分類Dev

MongoDBのコレクションの再帰検索

分類Dev

PythonとC#のコレクションの検索

分類Dev

PythonとC#のコレクションの検索

分類Dev

セットコレクションで検索

分類Dev

Laravelコレクションを表示で検索

分類Dev

MongoDBが不明なキーでコレクションを検索

分類Dev

MySQLでのコラボレーションの検索

分類Dev

文字列コレクションを検索する最速の方法

分類Dev

Meteorコレクション:配列内の要素を検索

分類Dev

laravel 5.5雄弁、関係コレクションの検索

分類Dev

コレクションビューの検索機能

分類Dev

Laravelコレクションの検索値

分類Dev

コレクション内のMongodb検索特殊文字(\)

分類Dev

Javaコレクションで同じIDを持つすべての最新レコードを検索する

分類Dev

JavaScriptコレクションで複数のフレーズ間の最初の出現を検索する方法は?

分類Dev

xamarin形式の観測コレクション内の観測コレクションを検索する方法は?

分類Dev

別のコレクションmoongooseでサブクエリドキュメントを検索する方法

分類Dev

バックボーンJSコレクションを使用して任意の順序で単語を検索

分類Dev

オブジェクトのコレクションを作成し、ExcelVBAのコレクションで一致を検索します

分類Dev

オブジェクトのコレクションを作成し、ExcelVBAのコレクションで一致を検索します

Related 関連記事

  1. 1

    CloudFirestoreコレクションのパターンで検索

  2. 2

    mongodbで複数のコレクションを検索する

  3. 3

    mongodbで複数のコレクションを検索する

  4. 4

    mongoosasticで複数のコレクションを検索する

  5. 5

    部分検索コレクションjava

  6. 6

    複数のコレクションで検索マングース

  7. 7

    FirebaseFirestoreのコレクションでフィールドを検索する

  8. 8

    idの配列で同じコレクションを検索する方法は?

  9. 9

    SpringMongoTemplate-コレクション内の正規表現で検索

  10. 10

    MongoDBのコレクションの再帰検索

  11. 11

    PythonとC#のコレクションの検索

  12. 12

    PythonとC#のコレクションの検索

  13. 13

    セットコレクションで検索

  14. 14

    Laravelコレクションを表示で検索

  15. 15

    MongoDBが不明なキーでコレクションを検索

  16. 16

    MySQLでのコラボレーションの検索

  17. 17

    文字列コレクションを検索する最速の方法

  18. 18

    Meteorコレクション:配列内の要素を検索

  19. 19

    laravel 5.5雄弁、関係コレクションの検索

  20. 20

    コレクションビューの検索機能

  21. 21

    Laravelコレクションの検索値

  22. 22

    コレクション内のMongodb検索特殊文字(\)

  23. 23

    Javaコレクションで同じIDを持つすべての最新レコードを検索する

  24. 24

    JavaScriptコレクションで複数のフレーズ間の最初の出現を検索する方法は?

  25. 25

    xamarin形式の観測コレクション内の観測コレクションを検索する方法は?

  26. 26

    別のコレクションmoongooseでサブクエリドキュメントを検索する方法

  27. 27

    バックボーンJSコレクションを使用して任意の順序で単語を検索

  28. 28

    オブジェクトのコレクションを作成し、ExcelVBAのコレクションで一致を検索します

  29. 29

    オブジェクトのコレクションを作成し、ExcelVBAのコレクションで一致を検索します

ホットタグ

アーカイブ