我想实现的想法是一个ID表。基本上,它具有以下结构(user_id,teacher_id),其中user_id是指我的User表中的主键,而讲者ID是指我的讲师表中的主键。
我正在尝试在Redis中实现此功能,但是如果我将键设置为用户的主要ID,则当我尝试运行查询时,例如 获得讲师ID = 5的所有记录, 因为讲师不是键,但是我不会 值 能够在O(1)时间到达。
如何形成上面提到的id表之类的结构,或者Redis不支持该结构?
在使用redis时,您很快学到的一件事是,您可以根据访问需求来设计数据结构,特别是涉及关系时(毕竟它不是关系数据库)
正如您已经注意到的那样,没有方法可以通过O(1)时间复杂度的“值”进行搜索,但是有一些方法可以使用redis来描述您所描述的内容。这是我的建议:
这可能看起来像是复制关系的数据,因为您的用户数据将必须存储讲座ID,而您的讲座数据将存储用户ID,但这是如果要在无关系中建立关系时要付出的(微不足道的)代价。关系数据存储,例如redis。实际上,这很好。内存很少是小数据集的瓶颈(请考虑数千个ID)。
为了更好地了解人们如何使用Redis对具有关系的应用程序进行建模,我建议阅读Redis作者Salvatore Sanfilippo编写的简单Twitter克隆的设计和实现以及Lamernews的源代码。