在使用redis时,您很快学到的一件事是,您可以根据访问需求来设计数据结构,特别是涉及关系时(毕竟它不是关系数据库)
正如您已经注意到的那样,没有方法可以通过O(1)时间复杂度的“值”进行搜索,但是有一些方法可以使用redis来描述您所描述的内容。这是我的建议:
- 像已经做的那样,通过用户ID(例如,哈希)存储用户数据。
- 为每个讲师ID设置一个附加集,其中包含与所讨论的讲师ID对应的所有用户ID。
这可能看起来像是复制关系的数据,因为您的用户数据将必须存储讲座ID,而您的讲座数据将存储用户ID,但这是如果要在无关系中建立关系时要付出的(微不足道的)代价。关系数据存储,例如redis。实际上,这很好。内存很少是小数据集的瓶颈(请考虑数千个ID)。
为了更好地了解人们如何使用Redis对具有关系的应用程序进行建模,我建议阅读Redis作者Salvatore
Sanfilippo编写的简单Twitter克隆的设计和实现以及Lamernews的源代码。



