当我们一次需要多个项目时,缓存是否有用

时间:2016-06-29 04:51:06

标签: caching redis

我们正在开发一个ecom网站,其中管理员可以在产品类别制造商产品类别的组合上存储一些配置

我们有一些报告,可以返回10000个产品的交易(100-1000个产品类别制造商的独特组合)。 在此报告中,我们还需要使用配置

  1. 一个选项可能是从所有唯一的产品类别制造商的同一存储过程中获取配置。

  2. 另一种选择可能是将所有这些组合缓存在某些outproc缓存中(如redis)。一旦从存储过程中提取交易数据,系统将从缓存中提取所有1000个产品类别 - 功能组合的数据。但在这种情况下,我们将不得不请求缓存1000次,如果在缓存中找不到某些密钥,我们将不得不命中数据库。

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

    有人建议如果缓存在这种情况下有用吗?

1 个答案:

答案 0 :(得分:0)

我们主要使用缓存2次,

  1. 减少延迟:缓存离客户端更近,资源到达客户端的时间更短。
  2. 减少网络流量:大多数情况下,我们发现某些资源可以重复使用但始终从原始资源获取     是昂贵的,并使更多不必要的流量。添加缓存层     解决了这个问题。
  3. 所以回答你的问题,"当我们一次需要多个项目时,缓存是否有用?"你必须考虑以上2点。您重复使用了多少(缓存命中百分比)。缓存调用和调用原始源之间的成本差异。

    如果您的问题是一次获得1000件物品,Redis就没有提供相应的问题。它将比跨国数据库快得多。你可以拥有所有产品类别 - 功能组合的集合,它更好,因为我们没有缓存未命中。但是,在继续之前,请考虑Redis DB的大小。