我编写索隆框架已经有一段时间了,早期让我感到惊讶的一点是其缓存层的设计非常简洁。这并不是因为它做了什么革命性的创新——它并没有——而是因为它在妥善处理生产环境中实际会遇到的边界情况的同时,不会干扰你的正常开发流程。
让我来分享一下我所学到的内容。
三个注解
索隆框架仅提供了三个用于缓存的注解。不多不少:
-
@Cache— 直读式缓存。如果键存在,则直接返回;否则执行方法并存储结果。 -
@CachePut— 始终执行方法,然后用结果更新缓存。 -
@CacheRemove— 执行方法,然后移除一个或多个缓存条目。
下面是一个展示这三种用法的极简示例:
@Controller
public class CacheController {
@Cache(key = "user:${userId}", seconds = 30)
@Mapping("/user/{userId}")
public User getUser(int userId) {
return userService.findById(userId);
}
@CachePut(key = "user:${userId}")
@Mapping("/user/{userId}/refresh")
public User refreshUser(int userId) {
return userService.findById(userId);
}
@CacheRemove(tags = "users")
@Mapping("/user/{userId}/delete")
public String deleteUser(int userId) {
userService.delete(userId);
return "deleted";
}
}
@CacheRemove(tags = "users") 这一行值得仔细审视——它实现的功能在大多数基于注解的缓存系统中往往难以实现。
标签技巧
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。