几天前我参加了中/高级PHP开发人员的面试(我失败了)。有人问我这个棘手的问题仍然困扰着我。
想象一下,我们使用PHP + Memcached并且负载非常高的项目(大约每秒 100 次点击或更多)。我们有大量的 SQL 查询要执行,因此我们决定将其缓存在 Memcached 中。现在缓存已经过期了,我们需要再次执行那个巨大的查询来缓存它,但问题是所有100个用户同时访问网站,所以理论上服务器会同时进行100次SQL查询来缓存它之后,我认为服务器会宕机。
我们怎么能解决这个问题?我认为查询应该执行一次,另外 99 个人应该留下并等待 Memcached 中存在的数据。