gpt4 book ai didi

database - 远程服务的缓存策略;我应该考虑什么?

转载 作者:太空狗 更新时间:2023-10-30 01:47:23 25 4
gpt4 key购买 nike

我的网络应用程序包含从我无法控制的外部 API 收集的数据。我限制在每小时大约 20,000 个 API 请求。我的数据库中有大约 250,000 个项目。这些项目中的每一个本质上都是一个缓存版本。考虑更新 1 个项目的缓存需要 1 个请求。显然,在这些情况下不可能拥有完全最新的缓存。那么,在制定缓存数据的策略时应该考虑哪些事项。这些是想到的事情,但我希望有人有一些我没有想到的好主意。

  • 自项目创建以来的时间(时间越短越重要)
  • 特定项目的“喜欢”次数(可能意味着被查看的可能性更高)
  • 自上次更新以来的时间

更多细节:元素是照片。每张照片都属于一个事件。当前发生的事件更像是被客户查看(因此它们应该优先)。虽然我现在的数据库中只有 25 万条,但这个数字增长得相当快(很快就会达到 100 万大关,可能需要 5 个月)。

最佳答案

http://instagram.com/developer/realtime/有什么用看起来 Instagram 愿意在有新的(可能是更新的?)图片供您查看时发布到您的服务器。那会成功吗?

否则,我认为你的问题听起来很像任何搜索引擎的问题——你见过Wikipedia on crawler selection criteria吗? ?您正在处理网络爬虫面临的许多问题:爬取什么、多久爬一次以及如何避免向单个站点发出过多请求。您也可以查看 open-source crawlers (在同一页面上)您可能能够学习的代码和算法。

无论如何,抛出一些关于爬行标准的想法:

  • 更新时更新经常更改的内容。因此,如果某个项目在最近五次更新中没有更改,那么您可以假设它不会经常更改并减少更新。
  • 为每张图片创建一个分数,并更新得分最高的图片。或最低分数(取决于您使用的分数类型)。这与 LilyPond 用于 typeset music 的想法类似。 .为这样的分数创建输入的一些方法:
    • 图像更新和需要重新缓存的可能性的统计模型。
    • 每张图片的重要性得分,使用图片的新近度或其事件的流行度等因素。
  • 更新经常被查看的内容。
  • 更新有很多观点的东西。
  • 时间会影响图像更新的可能性吗?您提到较新的图像更重要,但是旧图像发生变化的可能性如何?降低检查旧图像的频率。
  • 分配您的部分请求以缓慢更新所有内容,并将其他部分拆分为同时处理来自多个不同算法的结果。因此,例如,具有以下内容(数字仅用于显示/示例——我只是把它们从帽子里拿出来):
    • 每小时 5,000 个请求搅动数据库的完整内容(前提是自上次爬虫通过后它们没有更新)
    • 2,500 个处理新图像的请求(您提到的更重要)
    • 2,500 个处理时事图像的请求
    • 2,500 个请求处理前 15,000 个观看次数最多的图像(只要该图像的最后 5 次检查有变化,否则,按递减的时间表检查)
    • 2,500 个请求处理至少已被查看的图像
    • 总计:每小时 15,000 个请求。

关于database - 远程服务的缓存策略;我应该考虑什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com