如何在Redis中组织汽车的制造,模型和生成

时间:2012-09-26 07:39:48

标签: database data-structures orm redis

我需要存储DB(Redis)汽车,它的品牌,型号和代,以及下一个要求:

  • 我需要能够获取所有精确制造,制造和模型或制造,模型和发电的汽车(例如所有宝马 - M3 - E30,或者只是所有宝马-M3等)

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

我设计了一些结构,但它看起来太大了。我有4种对象类型:汽车,品牌,型号,世代。它们按树结构分组。在树的顶部(根)是make,下一级是模型,下一代是底部,底部是汽车。所以品牌,型号和世代都有分别包含模型,代和汽车的排序集,汽车,世代和模型都有简单的字符串值,分别指向生成,模型和制作。

更多的是,make和models拥有自己的汽车排序组合。

你怎么看待这个?我想将制作,模型和生成联合到单个对象,但现在不怎么做。

1 个答案:

答案 0 :(得分:0)

我会将您的基础对象设为汽车,您可以将其建模为具有“制造”,“模型”,“生成”,“评级”以及您需要的任何其他字段的哈希。然后,对于每个品牌,都有一个排序的集合,例如make:BMW => {car_id, car_id, car_id},其中得分等于评分。同样,具有模型和生成排序集,也按评级排序。然后,您可以使用zunionstore / zinterstore指定所需的确切属性集,并通过评级从结果中提取数据。这样可以很容易地添加一个新的facet进行查询 - 你可以创建一个新的zsets集合,比如颜色,然后将它们扔到同一个union / intersect引擎中。