php - 缓存来自 API 的数十亿响应的最快/最有效的方法是什么?

标签 php mysql redis storage guzzle

我正在查询的 API 将采用 5 个参数,将它们称为 A、B、C、D、E,使用数据存储进行一些计算,然后返回包含大约 8 个字段的响应,这些字段都将被存储。不幸的是,这个计算需要一点时间,并且导致用户体验充其量也很慢。值得注意的是,此响应将使用 javascript 应用程序显示在屏幕上,周围的技术目前是 PHP 7.1,使用 Laravel 和 MySQL

我的计划是将每个响应保存在一个表中(或类似表,具体取决于响应),然后将它们用作直接查找,这样最终用户可以输入 A、B、C、D、E 并获得即时响应.

所以,这个问题基本上分为两部分:

1:一天查询 10 亿次(或更多)restful API 的最佳方法是什么?目前,对于类似的场景,我一直在使用 Guzzle Promises 一次发送 5 个请求

2:推荐使用哪种技术来存储这些数据?它只需是单行或实体,不需要任何关系。此数据不会用于连接或类似的东西。目前,计划是使用分片 MySQL,或使用 Redis(但我担心 Redis 最终会停止扩展,例如我对数据的需求会大量增加)。

任何对这些问题的任何见解都将不胜感激

最佳答案

关于缓存存储

由于您的 API 通过 HTTP 协议(protocol)运行,您能做的最好的事情就是遵循 HTTP Caching .基本上,这意味着您需要发送适当的 header 作为响应,以激活expiration 和/或validation 缓存模型。

这也意味着您不需要编写缓存存储。您可以使用现有的反向代理解决方案。例如,在 AWS 中您可以使用 CloudFront .如果您自己维护服务器 - 您可以使用 Varnish 或 Nginx 作为反向代理。

关于php - 缓存来自 API 的数十亿响应的最快/最有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46257101/

相关文章:

php - 两个表连接两个结果

redis - 使用 Spring Data Repository 在 Redis 中使用 Long 自动增量?

php - 如何让 session 允许不同的项目?

php - MYSQL从小时表中的数据库表中统计访客数量,格式从1 :00 to 23:00开始

javascript - 如何在php中将用户id更改为他们的名字?

ruby-on-rails - sidekiq 不会发送异常通知电子邮件

node.js - Heroku 上的 Node 和 Redis 应用程序错误

php - 在 IBM/Lotus Domino 服务器上运行 PHP

java - 从java应用程序(mysql,javafx)插入阿拉伯语数据时出现问题

javascript - 使用javascript函数将IP插入数据库?