小编典典

按值查找键

redis

我想实现的想法是一个ID表。基本上,它具有以下结构(user_id,teacher_id),其中user_id是指我的User表中的主键,而讲者ID是指我的讲师表中的主键。

我正在尝试在Redis中实现此功能,但是如果我将键设置为用户的主要ID,则当我尝试运行查询时,例如 获得讲师ID = 5的所有记录,
因为讲师不是键,但是我不会 能够在O(1)时间到达。

如何形成上面提到的id表之类的结构,或者Redis不支持该结构?


阅读 289

收藏
2020-06-20

共1个答案

小编典典

在使用redis时,您很快学到的一件事是,您可以根据访问需求来设计数据结构,特别是涉及关系时(毕竟它不是关系数据库)

正如您已经注意到的那样,没有方法可以通过O(1)时间复杂度的“值”进行搜索,但是有一些方法可以使用redis来描述您所描述的内容。这是我的建议:

  • 像已经做的那样,通过用户ID(例如,哈希)存储用户数据。
  • 为每个讲师ID设置一个附加集,其中包含与所讨论的讲师ID对应的所有用户ID。

这可能看起来像是复制关系的数据,因为您的用户数据将必须存储讲座ID,而您的讲座数据将存储用户ID,但这是如果要在无关系中建立关系时要付出的(微不足道的)代价。关系数据存储,例如redis。实际上,这很好。内存很少是小数据集的瓶颈(请考虑数千个ID)。

为了更好地了解人们如何使用Redis对具有关系的应用程序进行建模,我建议阅读Redis作者Salvatore
Sanfilippo
编写的简单Twitter克隆的设计和实现以及Lamernews的源代码。

2020-06-20