1

我需要将其品牌、型号和世代存储在 DB (Redis) 汽车中,并具有以下要求:

  • 我需要能够获取所有具有确切品牌、品牌和型号或品牌、型号和世代的汽车(例如所有 BMW - M3 - E30,或只是所有 BMW -M3 等等)

  • 我需要存储汽车的评级,以便我可以获取顶级 X 宝马或顶级 X 宝马 E30 ......

我设计了一些结构,但它似乎太大了。我有 4 种对象类型:汽车、品牌、型号、世代。它们按树形结构分组。树(根)的顶部是制造,下一层是模型,下一代,底部是汽车。因此,makes、models 和generations 分别包含了models、generations 和cars,而cars、generations 和models 具有简单的字符串值,分别指向generation、model 和make。

更重要的是,品牌和型号拥有自己的分类汽车。

你怎么看?我想将品牌、模型和生成联合到单个对象,但现在不知道如何。

4

1 回答 1

0

我会将您的基础对象设为汽车,您可以将其建模为包含 Make、Model、Generation、Rating 和您需要的任何其他字段的哈希。然后对于每个品牌,有一个排序集,例如make:BMW => {car_id, car_id, car_id},其中分数等于评级。同样,具有模型和生成排序集,也按等级排序。然后,您可以使用 zunionstore/zinterstore 指定所需的确切属性集,并按评级从结果中提取数据。这使得添加要查询的新方面变得容易 - 您可以创建一个新的 zset 集合,例如颜色并将其扔到同一个联合/相交引擎中。

于 2012-10-02T16:14:02.940 回答