1

シリアル化されたオブジェクトを、2つの値の複合主キーを持つデータベーステーブルからRedisに保存したいと思います。オブジェクトは、コードでは次のようになります。

Public Class Contact
    Public Property Instance_Id() As Long
    Public Property Contact_Id() As Long
    Public Property First_Name() As String
    Public Property Last_Name() As String
End Class

Instance_Idは連絡先のグループ間で共有され、Contact_Id値は各連絡先に固有です。

特定のInstance_Idを持つすべての連絡先、または特定のContact_Idを持つ1つの連絡先だけを取得できるRedisにこれらのオブジェクトを保存するための最も高速でメモリ効率の高い方法は何ですか?

4

1 に答える 1

3

フォームの連絡先ごとにハッシュを作成し(contact_id =>連絡先クラスデータ)、キー(contact_id)で直接クエリして、特定のルックアップケースを解決できます。次に、(instance_id => [contact_id1、contact_id2、...、contact_idN])の(並べ替えられた)セットを追加します。instance_idで検索するには、1つのクエリで設定されたインデックスからcontact_idsをフェッチし、取得したIDごとに、それらのIDごとに特定の検索を実行します。

RDBMSの観点からすると、これはおかしなことに聞こえます。クエリを高価な操作と考えることに慣れているからです。Redisコマンドは非常に高速になるように設計されているため、RDBMSで1つのクエリを実行するために大量のコマンドを送信するのはかなり効率的です。

于 2013-06-10T01:50:12.963 に答える