假设我们的所有页面上都有一些重要的计数器,并且我们的网站负载很重。我们将它们存储在一组 Redis 密钥中,这些密钥会在一小时左右自动过期。
在我们的代码中,我们检查是否存在包含计数器的键,如果不存在,我们执行一些繁重的操作(假设它是 MySQL 中具有多个 WHERE 的 COUNT(*))来重新计算它的值,然后我们设置键的我们新重新计算的价值。
<?php
$counter = $redis->get('My:Heavy_Counter');
if ($counter === null) {
$counter = $counter->recalculate();
$redis->set('My:Heavy_Counter', $counter);
}
?>
问题是每个网页客户端都要做上述操作。
是否有一种优雅的方法可以仅通过第一个客户端的请求重新计算这些密钥,同时让其他数千个客户端等待?