javascript - Redis 数据库设计不当

标签 javascript node.js redis

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

  • 注册买家
  • 获取买家的 ID
  • 根据某些条件查找匹配的买家出价

详情here

由于我是 Redis 新手,所以我开始这样实现:

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

现在,问题来了:

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

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

提前谢谢

最佳答案

Redis的第一条规则:像你想读的那样存储数据。

回答/route查询时,您需要对买家报价的两个属性进行“过滤”——状态和设备。给猫剥皮的方法不止一种,所以这里有一种:使用许多排序集来获得优惠。

每个此类优惠排序集键名称可能如下所示:<device>:<state> (因此 git 中提供的示例将添加到键 desktop:CA )。

要进行查询,请使用路由的参数来组成 key 名称,然后定期查找得分最高的报价并解析哈希中的买家详细信息。

现在就去找那份工作吧!

关于javascript - Redis 数据库设计不当,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831909/

相关文章:

javascript - 强制 $.each() 循环等待动画完成后再继续

javascript - 同步解析链接的 Angular Promise

node.js - 文件系统等重名功能

algorithm - 为什么redis zrank的复杂度是O(log(N))

python - get 上的 Redis 通配符键

javascript - 使用回调函数动态加载样式表

javascript - 融合层中可以拥有的不同标记数量是否有限制?

node.js - 使用 Mocha 读取生态系统变量(单元测试)

javascript - Jasmine 测试中 Bluebird promise 的警告

python - 如何在 Django 中使用 redis?