假设我有以下代码:
Entity getEntity(GUID entityId) {
Entity entity = entityLRUCache.get(entityId);
if (entity == null) {
entity = longLoadFromDatabase(entityId);
entityLRUCache.put(entityId, entity);
}
return entity;
}
感谢@BenManes,我可以使用 Caffeine 框架来解决缓存踩踏问题:
Entity getEntity(GUID entityId) {
return entityCache.get(entityId, this::longLoadFromDatabase);
}
但是现在方法longLoadFromDatabase
返回 aSingle<Entity>
而不是 Entity 本身(第二个参数 forget
是来自 的映射器int -> Entity
),因此以前的解决方案将不再适用。