Я создаю приложение Spring, которое сохраняет в базе данных Postgres GPS-позиции транспортных средств. Транспортные средства отправляют свое местоположение каждую минуту. Каждое транспортное средство идентифицируется некоторым идентификатором (String). Существует конечная точка REST для получения всех текущих позиций. Я хотел бы кэшировать все текущие позиции GPS, чтобы ускорить их получение без запроса базы данных.
Я пытался использовать:
@Cacheable(key = "'all'")
List<Position> getAllVehiclePositions();
и это работает, но проблема в том, что когда какое-то транспортное средство отправляет новую позицию, у меня нет возможности обновить список в кеше, поэтому я должен
@CacheEvict(key = "'all'")
что не имеет никакого смысла, потому что кеш все еще вытесняется.
Я читал об этом, например. https://jira.spring.io/browse/SPR-12036, но есть нет решения (только не использовать кеш).
Я подумал о создании ConcurrentHashMap, где ключом будет идентификатор транспортного средства, чтобы я мог легко обновлять его, и я мог просто использовать потоки для преобразования списка в карту.
Что я должен делать? Какое лучшее решение?