【发布时间】:2017-01-02 11:21:08
【问题描述】:
我正在创建 Spring 应用程序,它将车辆的 GPS 位置保存在 Postgres 数据库中。车辆每分钟发送一次位置。每辆车都由一些 ID(字符串)标识。有 REST 端点来获取所有当前位置。我想缓存所有当前的 GPS 位置,以便在不请求数据库的情况下更快地获取。
我尝试使用:
@Cacheable(key = "'all'")
List<Position> getAllVehiclePositions();
它可以工作,但问题是当某些车辆发送新位置时,我无法更新缓存中的列表,所以我必须
@CacheEvict(key = "'all'")
这没有任何意义,因为缓存仍在被驱逐。
我已经读过它,例如https://jira.spring.io/browse/SPR-12036 但没有解决方案(只是不使用缓存)。
我考虑过创建 ConcurrentHashMap,其中键是车辆 ID,这样我就可以轻松更新它,我可以简单地使用流将 List 转换为 Map。
我该怎么办?最好的解决方案是什么?
【问题讨论】:
标签: spring caching spring-cache