如何使用Redis存储和检索复合键值

时间:2013-03-23 17:50:38

标签: 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的联系人?

1 个答案:

答案 0 :(得分:3)

我会为表单的每个联系人(contact_id =>联系类数据)构建一个哈希值,可以通过密钥(contact_id)直接查询,以解决您的特定查询案例。然后,添加(排序,如果您关心排序)一组(instance_id => [contact_id1,contact_id2,...,contact_idN])。要通过instance_id查找,您可以在一个查询中从索引集中获取contact_ids,然后对于您返回的每个ID,对每个ID进行特定查找。

从RDBMS的角度来看,这听起来很疯狂,我知道,因为你习惯于将查询视为昂贵的操作。 Redis命令设计得非常快,因此发送大量命令来执行RDBMS中的一个查询是相当有效的。