如何使用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的联系人,什么是最快和最有效的内存存储这些对象的方法?

我将为表单的每个联系人(contact_id => contact类数据)构建一个散列,可以通过键(contact_id)直接查询,以解决您的特定查找情况。然后,添加一个(排序,如果您关心排序)集(instance_id => [contact_id1, contact_id2,…]contact_idN])。要通过instance_id查找,您将在一个查询中从索引集获取contact_ids,然后对于您返回的每个id,对每个id进行特定的查找。

从RDBMS的角度来看,我意识到这听起来很疯狂,因为您习惯于将查询视为一种昂贵的操作。Redis命令被设计得非常快,所以在RDBMS中发送大量命令来完成一个查询是相当高效的。

最新更新