当我们一次需要多个项目时,缓存会有用吗?



我们正在制作一个电子商务网站,管理员可以将一些配置存储在Product-Category-manufacturerProduct-Category的组合中。

我们有一些报告,它可以返回10000个Product的事务(具有100-1000个唯一组合 Product -category-manufacturer)。在这个报告中,我们还需要使用配置

  1. 一个选项可以从相同的存储过程中为所有唯一的Product-Category-manufacturer获取配置。

  2. 另一个选择可能是缓存所有这些组合在一些外部进程缓存(如redis)。一旦从存储过程中获取事务数据,系统将从缓存中提取所有1000 Product-Category-Feature组合的数据。但是在这种情况下,我们将不得不请求缓存1000次,如果在缓存中没有找到一些键,我们将不得不访问数据库。

实际上可能存在一些数据库中不存在数据的组合。如果我们请求这些组合,系统将无法在缓存中找到它,并且每次都必须访问数据库。为了解决这个问题,我们将不得不形成所有产品-类别-功能组合,在缓存中有可用的数据。

有没有人建议缓存在这种情况下是否有用?

我们主要在两种情况下使用缓存,

  1. 减少延迟:缓存离客户端更近,资源到达客户端所需的时间更短。
  2. 减少网络流量:大多数情况下,我们看到一些资源是可重用的,但总是从原始源获取是昂贵的,并造成更多不必要的交通。添加缓存层解决了这个问题。

所以要回答你的问题,"当我们一次需要多个项目时,缓存是否有用?"你必须考虑以上两点。重用了多少(缓存命中率)。以及调用缓存和调用原始源之间的开销差异。

如果你的问题是一次获得1000个项目,Redis没有问题。它将比跨国铁路快得多。您可以设置所有的产品-类别-功能组合,这更好,因为我们不会有缓存丢失。但是,在继续之前,请考虑Redis DB的大小。

最新更新