你能帮我解决一下我的问题。我有一些慢的mysql查询,所以我将其结果缓存到memcache中。
我这样做:
$data = get_from_cache();
if (! $data) {
$data = get_from_mysql();
set_cache($data);
}
问题。 有时我每秒大约有10个请求。因此,当我的缓存过期时,我有5-10个get-requests,它们同时启动这个缓慢的mysql查询。
你能推荐一种模式让我在php中做一个互斥,或类似的东西,只对mysql做一个慢速请求。
答案 0 :(得分:2)
这被称为狗堆问题。 Strategy: Break Up The Memcache Dog Pile 描述了两种方法:
解决方案1:
解决方案2: