需要帮助选择正确的缓存策略

时间:2018-02-01 12:23:07

标签: caching memcached

我们计划将价格数据存储到Memcache。价格受汽车变种位置(城市)的影响。这就是它存储在数据库中的方式。

变种,城市,价格 21,48,40000

现在的困惑是我们如何将这些数据存储到Memcache中。

可能性1 :我们将每个价格存储在单独的缓存对象中,如果所有变体的价格属于某个模型需要在单个页面上显示,则执行多重操作。

可能性2 :我们将价格存储在模型,城市级别。模型的所有变体的价格将存储在单个对象中。这个对象会稍微沉重,但不需要多功能。

需要你帮助做出正确的决定。

1 个答案:

答案 0 :(得分:1)

TLDR:这完全取决于您希望如何向最终用户公开该功能,以及查询模式的外观。

例如:

  1. 如果您的流量是用户可以在城市的详细信息页面上查看所有变体价格,那么您可以使用<city_id>_<car_model_id>作为密钥,并存储针对该密钥的变体的所有数据(可能性2)。

  2. 如果流量是用户可以在单个页面上查看城市中所有变体的价格,那么您需要将密钥作为<car_model_id>并将所有数据作为Json存储在此密钥

  3. 如果流量是用户只能为每个城市一次查看一个变体的价格,那么您可以使用密钥<city_id>_<car_variant_id>和商店价格。

  4. 要记住的一件事是你可能必须刷新缓存/执行upserts的频率,在汽车的情况下应该很少(每天/每秒更改一辆汽车的价格)。所以,我会选择上面的选项1(你所描述的可能性2)。