java - Vertx 中的定时缓存

标签 java caching vert.x

我刚刚开始使用 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/

相关文章:

java - 如何构建可嵌入类型的 ElementCollection?

Java Spring : How to send http request to https urls?

javascript - 强制网络浏览器下载整个页面内容

java - 如何使用 T 和 List<T> 泛化类

ruby-on-rails - 可以在 Rails 3.2 中基于每个请求禁用 Rack 缓存吗?

java - 避免启用 Log4j/Slf4j 调试检查

java - 高速使用其他线程中的 StyledText.append()

java - Vert.x - 从 POST 请求获取参数

java - Vertx客户端Http : Connection closed when perform rest call

javascript - vert-x 3.3.2 http客户端异常处理程序