【问题标题】:Storing Amazon API data in Local Database将 Amazon API 数据存储在本地数据库中
【发布时间】:2015-12-28 19:31:43
【问题描述】:

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

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

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

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

如果我确实走这条路并创建了一个使用 Amazon 和 Walmart API 来提取价格数据的函数,那么我该如何在后台每 1 到 5 分钟自动运行此函数,24/7/365?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    可能是Cron 的工作。您必须提供更多信息,例如您的应用程序在哪里运行(AWS EC2 或其他地方?),以及它是在 Linux 还是 Windows 上运行,然后我才能给出更详细的建议。

    【讨论】:

    • 感谢您的信息。我将研究 Redis。也感谢有关 Cron 作业的提示!
    【解决方案2】:

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

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

    然后是不同的策略:

    • 预填充缓存(您提到的那个) - 提前获取所有数据并通过 cron 作业或专用守护程序不断更新。 这会稍微加快第一次访问者的页面加载速度,但带宽最昂贵。
    • 按需缓存 - 从空缓存开始,仅在第一次请求时获取数据(或当请求为过期数据提供服务时),第一次请求会较慢,但这可确保仅请求和缓存所需的数据。
    • 以上组合:例如在第一次请求时获取,然后在后台作业中更新

    【讨论】:

    • 感谢您提供此信息。我考虑使用预填充缓存的原因(感谢术语)是因为我有一个页面上有大约 7 个产品..如果我刷新页面太快,我会从 API 收到错误,因为我是一次发出太多请求。
    • 如果第一页加载的结果被缓存,那么刷新将已经从缓存中读取,并且对 api 使用没有影响。但是您可能需要稍微限制它们(在请求之间添加延迟),因此第一个请求会更慢
    猜你喜欢
    • 2023-01-27
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多