我有一个 Node.js API 负责 3 件事:
- 注册买家
- 获取买家的 ID
- 根据某些条件查找匹配的买家出价
详情here
由于我是 Redis 新手,所以我开始这样实现:
- JSON.stringify 买家并使用 SET 存储
- 将所有买家的报价存储为有序集(这是针对第三个端点,需要具有最高值(value)的报价) - 该集包含表示哈希名称的字符串
- 然后,该哈希存储表示具有特定值的集合名称的字符串,以及满足这些条件后用户将被重定向到的位置(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/