我想将数据库表中的序列化对象存储在 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 中存储这些对象的最快和内存效率最高的方法是什么,我可以在 Redis 中检索具有特定 Instance_Id 的所有联系人,或仅检索具有特定 Contact_Id 的联系人?
最佳答案
我会为表单(contact_id => Contact class data)的每个联系人构建一个散列,可以直接通过键(contact_id)查询来解决您的特定查找案例。然后,添加一组(已排序,如果您关心排序)(instance_id => [contact_id1, contact_id2, ... , contact_idN])。要按 instance_id 查找,您需要从一个查询中的索引集中获取 contact_ids,然后针对您返回的每个 ID,对每个 ID 执行特定查找。
从 RDBMS 的角度来看,这听起来很疯狂,我意识到,因为您习惯于将查询视为一项昂贵的操作。 Redis 命令的设计速度非常快,因此发送一大批命令来执行 RDBMS 中的一个查询是相当有效的。
关于redis - 如何使用 Redis 存储和检索复合键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15590112/