2013-03-23 83 views
1

我想使用兩個值的複合主鍵將數據庫表中的序列化對象存儲在Redis中。物體可能看起來像下面在碼:如何使用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值是唯一的每個接觸。

什麼是最快和最有記憶效率的方式來存儲這些對象在Redis中,我可以檢索具有特定Instance_Id的所有聯繫人,或只有一個聯繫人與特定的Contact_Id?

+0

哪個redis版本? 2.X? – 2013-03-23 18:04:39

+0

Redis版本2.6.11 – Anthony 2013-03-23 20:05:48

回答

2

我會爲表單的每個聯繫人(contact_id =>聯繫人類數據)構建一個散列,可以直接通過鍵(contact_id)查詢它以解決您的特定查找情況。然後,添加一個(排序,如果你關心排序)set(instance_id => [contact_id1,contact_id2,...,contact_idN])。要通過instance_id查找,您可以從一個查詢中的索引集中獲取contact_ids,然後爲每個您找回的id找一個特定的查找。

從RDBMS的角度來看,這聽起來很瘋狂,我意識到,因爲您習慣於將查詢視爲昂貴的操作。 Redis命令的設計非常快速,因此發送大量命令來完成RDBMS中的一個查詢是相當高效的。