语境
我在 ehcache 中存储了一个 java.util.List。
Key(String) --> List<UserDetail>
有序列表包含我最活跃用户的前 10 名排名。
问题
并发的第 3 方客户可能正在请求此列表。关于排名,我要求尽可能保持最新。因此,如果由于用户的活动而改变了排名,那么缓存中的有序列表不能长时间保持陈旧。一旦我重新计算了一个新列表,我想立即替换缓存中的那个。
考虑一个繁忙的场景,多个并发客户端正在请求排名;如何以如下方式替换缓存项:客户端可以继续提取可能过时的快照。他们不应该得到一个空值。
只有 1 个服务器线程写入缓存。