在本地数据库中存储Amazon API数据

时间:2015-12-28 19:31:44

标签: php mysql api amazon-web-services walmart-api

我正在开发一个从Amazon.com和Walmart提取产品价格数据的网站。我猜测将来它还会从其他地方提取数据。

我的第一个想法是直接从亚马逊提取数据(使用他们的产品广告API),然后在网站上显示每个登陆页面的访问者的数据。如果我要检索的产品价格不多(或者网站访问者数量很少),这不是一个坏主意。我认为,一旦网站繁忙,我会遇到问题,如果我增加了我想要提价的产品数量。

使用Amazon和Walmart API,我能够成功进行REST api调用并解析返回的XML以获取我需要的信息。

将信息存储在本地数据库中是否有意义,每隔1-5分钟更新一次,然后让网站访问者从本地数据库中提取定价信息,而不是向亚马逊调用API和沃尔玛?

如果我选择这条路线并创建一个使用亚马逊和沃尔玛API来提取价格数据的功能,那么如何在后台每隔1到5分钟自动运行此功能,24/7/365?

2 个答案:

答案 0 :(得分:2)

  

将该信息存储在本地数据库中是否有意义

是。实际上这听起来就像一个典型的缓存设置。我建议查看Redis而不是使用关系数据库。

  

然后我如何每隔1到5分钟自动运行此功能   背景

可能是Cron工作。在我提供更详细的建议之前,您必须提供更多信息,例如您的应用程序运行位置(AWS EC2或其他地方?)以及它是否在Linux或Windows上运行。

答案 1 :(得分:1)

这取决于您的负载和缓存命中率 - 例如,如果您每天只有100位访问者访问几个产品页面 - 无需每分钟更新1000多个位置,甚至可能无需存储任何内容。

但是如果您的访问者经常查看相同的页面 - 那么缓存将非常有用。

然后是不同的策略:

  • 预填充缓存(您提到的缓存) - 提前获取所有数据并通过cron作业或专用守护程序继续更新。 这会加快第一位访问者的页面加载速度,但是大部分带宽都很昂贵。
  • 按需缓存 - 从空缓存开始,只在第一次请求时获取数据(或者当请求提供过期数据时),第一次请求将会变慢,但这样可以确保只请求和缓存所需的数据。 / LI>
  • 上述组合:例如,在第一次请求时获取,但随后在后台作业中更新