すべてのページにいくつかの重要なカウンターがあり、Web サイトの負荷が高いとします。それらは、1 時間程度で自動的に期限切れになる一連の Redis キーに保存されます。
コードでは、カウンターを含むキーが存在するかどうかを確認し、存在しない場合は、負荷の高い操作 (MySQL で複数の WHERE を持つ COUNT(*) としましょう) を実行してその値を再計算し、キーの新しく再計算された値。
<?php
$counter = $redis->get('My:Heavy_Counter');
if ($counter === null) {
$counter = $counter->recalculate();
$redis->set('My:Heavy_Counter', $counter);
}
?>
問題は、各 Web ページ クライアントが上記の操作を行うことです。
他の何千ものクライアントを待機させながら、最初のクライアントのリクエストだけでこれらのキーを再計算するエレガントな方法はありますか?