当前位置: 首页 > 面试题库 >

按值查找键

壤驷棋
2023-03-14
问题内容

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

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

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


问题答案:

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

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

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

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

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



 类似资料:
  • 我有这样一个嵌套的JSON,它存储在中。 我正在使用io.vertx.core.json,并且只能使用这个库。

  • 问题内容: 我有一些如下所示的元素: 如何向属性值为(零)的元素添加类? 我尝试了许多不同的解决方案,但没有任何效果。一个例子: 任何的想法? 问题答案: 使用属性等于选择器 它在树上起作用 获取当前匹配元素集中每个元素的后代,并通过选择器,jQuery对象或元素进行过滤。

  • 问题内容: 我想通过在mongoDb中寻找一个名为value的用户来寻找用户。问题在于: 是,如果用户名是“ Peter”或“ PeTER” ..或类似的名称,我找不到它。 所以我想做像SQL 希望你们能得到什么? 简短:mongoose.js / mongodb中的“字段喜欢值” 问题答案: 好。只适合那些寻找答案的人我就是这样

  • 我想执行如下查询: 使用Spring的我应该使用这样的东西: 现在想象一下,我不想检查4列,而是检查10或20列,方法名会很长! 我在这个答案中看到,我可以使用在许多列中搜索相同的文本,但我希望每个列都有不同的文本值。 有什么方法可以缩短find方法并动态添加列(以及相应的值)吗? 谢谢

  • 我有以下方式的地图列表: 我想从地址字段的值中获取地址值。例如, 我想从键值"AddressUsageType"中获取值"PRINCIPAL" 我尝试过使用过滤器和许多其他MAP函数,但最终没有找到合适的解决方案。 这是我的代码片段,获取第一个键值对的值: 以下是上述片段的输出:

  • 问题内容: 在redis中,我将对象存储在一个排序集中。在我的解决方案中,能够按日期运行范围内的查询很重要,因此我存储的项目的得分为每个项目的时间戳,例如: 但是,在其他情况下,我需要根据其ID在集合中找到一个项目。我知道我不能像对待nosql db那样仅查询此数据结构,但是我尝试使用,这是行不通的。 它返回;“空列表或集” 也许我需要序列化不同吗?我已经使用Json.Net进行了序列化。 我如何