Context
Я храню java.util.List внутри ehcache.
Key(String) --> List<UserDetail>
Упорядоченный список содержит рейтинг 10 самых активных моих пользователей.
Задача
Параллельные сторонние клиенты могут запрашивать этот список.
У меня есть требование быть максимально актуальным в отношении рейтинга. Таким образом, если рейтинг изменяется из-за активности пользователей, упорядоченный список в кеше не должен оставаться устаревшим очень долго. После того как я пересчитал новый список, я хочу немедленно заменить его в кеше.
Рассмотрим сценарий занятости, при котором несколько одновременных клиентов запрашивают ранжирование; Как я могу заменить элемент кэша таким образом, чтобы: Клиенты могли продолжать получать возможно устаревший снимок. Они никогда не должны получать нулевое значение.
Там будет только 1 серверный поток, который пишет в кэш.