我刚刚开始使用 Vertx。我想知道是否有办法将响应数据存储/缓存一段时间?
例如,用户第一次调用我的API时,它将查询服务器上的数据库并返回数据。我想将此数据保存/缓存到服务器上的本地文件(或内存)中,例如 3 小时。在这 3 小时内,如果任何其他用户再次调用该 API,它将使用缓存的数据。 3小时后,缓存数据重置。
我尝试在 Google 上搜索 Vertx Redis 或 StaticHandler 等解决方案,但它们似乎过于复杂,并且似乎不符合我的需求?
有没有简单的方法可以实现这一点?
最佳答案
您可以使用缓存(可能带有一些 Map
)和 Vertx::setTimer
在 3 小时后使其失效。假设您正在使用路由器
:
router.get("/things/:id").handler(rc -> {
String id = rc.pathParam("id");
List result = cache.getThing(id);
if (result == null) {
result = getThingFromDatabase(id);
cache.saveThing(result);
vertx.setTimer(10800000, t -> { // <-- 3 hours
cache.invalidateThing(id);
});
}
return result;
});
关于java - Vertx 中的定时缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61910516/