缓存API对MySQL的响应 - 是很好的做法


Cache API responses to MySQL - is that good practice?

我正在使用一个对请求有限制的API。API 响应采用 XML 格式,通常大小约为 8 kB。简而言之:我想消除将相同的请求精确地发送到 API 两次。

可以有超过 200 万个请求及其适当的答案。因此,当我将如此数量的 XML 响应复制到 MySQL 中的记录时,如果我查询它,它的响应速度会足够快吗?

表结构:

  • id int PK Auto Increment
  • request_parameters文本唯一
  • 响应文本

我找到了MySQL查询缓存,但我认为它只方便很多请求。另一个可能会放慢速度?我也找到了Varnish,但在我看来它更像是一个HTML/代码缓存。

我假设:

  • 您只需要从给定的request_parameters获取response...WHERE request_parameters = 'some string'
  • request_parameters不要太长(少于 1000 个字符)

我建议:

  1. 删除您的 ID 列。虽然有些人建议始终使用整数作为主键,但我知道您并没有尝试构建关系数据库。您只需要一张桌子进行存储。

  2. request_parameters列类型更改为 VARCHAR(x) ,"x"是参数字符串的最大预期大小。

  3. request_parameters设为主键。

  4. 按照 PLB 的建议,存储 XML 响应的序列化版本。

2 百万行此类数据将需要几 Gb,外加一些索引空间。如果您的系统上有大量可用内存,并且如果您可以承受在重新启动MySQL时丢失所有数据,那么您可能需要尝试使用MEMORY表。