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