【发布时间】:2017-05-30 19:56:57
【问题描述】:
我在理解如何将此 SQL 数据库转换为 redis 数据库时遇到了一些麻烦。它是一个一对多的数据库,由关键字、响应和链接两者的关联表组成。
在我的关键字表中:
|ID---Keyword|
1 This
2 Cool
在我的响应表中
|ID---Response|
1 "I agree"
2 "wow"
在相关表中我有:
|ResponseID---KeywordID|
1 1
1 2
2 2
为了尝试在 redis 中解决这个问题,我尝试使用纯字符串来创建关键字 id 到关键字的索引:
set keyword:1 This
set keyword:2 Cool
与响应相同:
set response:1 "I agree"
set response:2 "wow"
然后我用集合来加入两者:
sadd keyword:1:response 1
sadd keyword:2:response 1
sadd keyword:2:response 2
现在我目前遇到的问题是如何像在 SQL 数据库上一样轮询数据。我不确定这个问题是由于缺少添加到 redis 数据库中的信息,还是我只是缺乏经验。
基本上我想从我的软件中获取一组关键字,例如:“This”、“Cool”,然后查找它们的 ID(分别为 1 和 2)。然后从他们的 ID 中使用相关索引找到响应 ID,然后使用响应 ID 获取响应字符串。请注意,我需要首先让数据返回与最多关键字匹配的响应,因此如果给出“This”、“Cool”,则会显示响应“我同意”,尽管如果只给出关键字“Cool”“哇”和“我同意”将被检索到。
这样做的目的是,当指定更多关键字时,响应将更具体地针对这些关键字。关键字越少,它就越有可能成为一般响应。这可以在上面看到,当指定两个关键字时,只有一个响应,而当指定一个关键字时,只有两个响应。 如果可能的话,我可以将这些结果从匹配的最多的关键字排序到匹配的最少的关键字,这也会很有帮助。
关于 redis 数据库中的足够数据来实现这一点,我是否遗漏了什么?或者这是否将在客户端应用程序访问 redis 数据库中完成。
我将通过 ruby 访问 redis 数据库,但如果这需要显示任何代码示例,我可以使用任何语言并将其移植过来。
【问题讨论】:
标签: ruby database redis one-to-many