Кешируйте count нужной сущности по каждому юзеру в его модели, или где вам покажется более правильным.
Обновлять его можно несколькими вариантами. Можно создать очередь в которую будет периодически валиться job после определенного действия пользователя. Можно задать временные интервалы обновления рейтинга, например 4 раза в сутки, и в промежутки по 6 часов потихоньку обновлять count по каждому пользователю (в таком случае кешировать мы будем старое и новое значение и их время, а рейтинг обновлять, когда у всех новое значение будет в требуемом промежутке).