gpt4 book ai didi

php - 同时调用 Memcache

转载 作者:行者123 更新时间:2023-11-29 06:30:02 24 4
gpt4 key购买 nike

几天前我参加了中/高级 PHP 开发人员的面试(我失败了)。我被问到这个棘手的问题仍然困扰着我。

假设我们使用 PHP + Memcached 并且项目负载非常大(大约每秒 100 次点击或更多)。我们要执行大量 SQL 查询,因此我们决定将其缓存在 Memcached 中。现在缓存已经过期,我们需要再次执行那个巨大的查询来缓存它,但问题是所有 100 个用户同时访问网站,所以理论上服务器会进行 100 次 SQL 查询同时缓存它,所以我认为服务器会宕机。

我们如何解决这个问题?我认为查询应该执行一次,另外 99 个人应该留下来等待 Memcached 中存在的数据。

最佳答案

We have huge SQL query to perform,

多久(假设每小时一次?)。 需要多长时间(假设 30m)

首先,任何人(客户端、服务器、php、用户)都不应该触发使查询发生的事件。您不希望前端有任何与服务页面请求阻塞有关的内容。

相反,您在后台、线程、另一台机器、cron 作业中执行查询(例如:每 1 小时运行一次查询以提供最新结果)。查询完成后,您可以在系统运行的同时写入内存缓存。

这样,没有页面请求会导致查询触发(并因此阻塞),此外,您可以稳定/一致地处理之前的 100 个请求。

此外,您不会在 mysql 中执行 100 个查询副本。它会并行执行一些(阻塞其余部分),但其他 90~ 查询将全部命中 sql 查询缓存,因此它实际上不会运行查询 100 次。

无论如何,我怀疑你是否愿意在这个地方工作。

希望这是有道理的!

关于php - 同时调用 Memcache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28514512/

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