不适当的Redis数据库设计

时间:2017-05-07 13:12:00

标签: javascript node.js redis

我有一个node.js API,负责3件事:

  • 注册买家
  • 获取身份证明的买家
  • 根据某些标准查找匹配的买家报价

详情here

因为我是Redis的新手,所以我开始实现这样的实现:

  1. JSON.stringify买家并使用SET
  2. 存储它
  3. 将所有买家的优惠存储为有序集(这是针对第三个端点,需要具有最高价值的优惠) - 此集包含表示散列名称的字符串
  4. 然后,该哈希存储表示具有特定值的集合名称的字符串,以及在满足这些条件后用户将被重定向到的位置(buyer1_devices,buyer1_hours等)
  5. 现在,问题在于:

    我需要让GET /路由工作。正如我提供的GitHub页面所述,我有3个参数:时间戳,设备和状态。我必须浏览所有集合并获取适当的位置以将用户重定向到。该位置存储在哈希中,但我必须浏览所有集合。既然这可能是一个糟糕的实现,那么这一切都出错了并继续实现这个?

    • 请注意,这是redis问题,而不是节点问题。我需要有关如何在Redis中实现此功能的说明,然后我将准备在Node中对其进行编码。

    提前谢谢

1 个答案:

答案 0 :(得分:2)

Redis的第一条规则:存储数据就像您想要阅读它一样。

要回答/route查询,您需要对买家优惠的两个属性“状态和设备”进行“过滤”。皮猫的方法不止一种,所以这里有一种方法:为优惠提供许多分类套装。

每个此类商品的Sorted Set键名称可能如下所示:<device>:<state>(因此git中提供的示例将添加到键desktop:CA)。

要查询,请使用路线的参数来撰写您的密钥名称,然后定期查找得分最高的要约并在哈希中解析买方的详细信息。

现在去做那份工作!