【发布时间】:2013-06-09 05:56:28
【问题描述】:
我的网络应用包含从我无法控制的外部 API 收集的数据。我限制在每小时大约 20,000 个 API 请求。我的数据库中有大约 250,000 个项目。这些项目中的每一个本质上都是一个缓存版本。考虑更新 1 个项目的缓存需要 1 个请求。显然,在这些情况下不可能有一个完全最新的缓存。那么,在制定缓存数据的策略时,我应该考虑哪些事情。这些是我想到的事情,但我希望有人有一些我没有想到的好主意。
- 自项目创建以来的时间(时间越短越重要)
- 特定项目的“赞”数(可能意味着被查看的概率更高)
- 自上次更新以来的时间
更多细节:这些项目是照片。每张照片都属于一个事件。当前发生的事件更喜欢被客户查看(因此它们应该优先)。虽然我现在数据库中只有 25 万个项目,但这个数字增长得相当快(很快就会达到 100 万个大关,可能需要 5 个月)。
【问题讨论】:
-
例如,为什么您不能一次检索过去一小时内已更改或新的 20K 项并仅更新数据库中的那些?当您每小时至少查询一次时,您不需要检查 1Mio 项目是否有更新?
-
除非我使用 API 请求,否则我无法知道哪些项目已更改。
-
是的,当然,但是请求可以过滤最新更改的请求,而不是仅仅为某一特定项目发出盲注?你访问的是哪个 API,Facebook?
-
Instagram。我很困惑,这与我列出的第三点有何不同:“自上次更新以来的时间”
-
所以你有一个 api 可以告诉你新的和更改的照片,并且每小时不到 20.000 张是新的或更改的?那么问题是什么?只需更新所有内容。
标签: database api caching optimization