当前位置: 首页 > 知识库问答 >
问题:

异步调用从redis缓存读取,以减少响应时间

边浩波
2023-03-14
Given list of employees  
List<<EMPLOYEE>EMPLOYEE> empList;

POJO class:
Employee{
int id;
String name;
String address;
}

输入:empID作为redis缓存的密钥

Redis缓存示例JSON数据

(关键)-

1 -

要求:遍历员工列表,并通过异步缓存调用为每个empID获取员工详细信息。

一旦所有异步调用完成。发送一份所有员工的名单和他们所有的细节。

完全的未来。SupplySync()执行该任务,但completableFuture的get()方法会等待每个异步调用完成。从而增加了响应时间。

甚至allOf()和join()方法也在增加等待异步任务完成的时间

有没有减少缓存响应时间的建议?

共有1个答案

上官斌
2023-03-14

您可以在Redis之前添加一个更紧密的(本地)异步缓存层,以减少进入Redis的读取操作数。在NodeJs中,我观察到这样做可以提高50%-100%的吞吐量。不同的pc设置会有不同的加速比。但连接Redis服务器的延迟必须始终高于从RAM获取值,对吗?

https://redis.io/topics/client-side-caching

寻找跟踪和广播选项。即使没有它们,您仍然可以使用来自github的异步lru缓存实现。

 类似资料:
  • 我运行jmeter脚本将近一周,今天观察到一件有趣的事情。以下是场景: 概述:我正在逐渐增加应用程序的负载。在上一次测试中,我给应用程序加载了100个用户,今天我将加载增加到150个用户。 150名用户测试结果: > 与上次测试相比,请求的响应时间减少了。(这是个好兆头) 吞吐量急剧下降到上一次测试的一半,负载更少。 我的问题是: > 当我的许多请求失败时,我得到了好的响应时间吗? 注:直到100

  • 问题内容: 我有一个发出异步请求的函数。我如何从中返回响应/结果? 我尝试从回调中返回值,以及将结果分配给函数内部的局部变量并返回该局部变量,但这些方法均未真正返回响应(它们都返回或变量的初始值为任意值) 。 使用jQuery函数的示例: 使用node.js的示例: 使用承诺块的示例: 问题答案: 在 一 中的Ajax代表 异步 。这意味着发送请求(或接收响应)已从正常执行流程中删除。在您的示例中

  • 使用promise的块的示例:

  • 我有一个AWS lambda函数,我可以用下面的代码同步调用并返回结果 响应有效负载的类型为<代码> 现在,我需要异步调用我的lambda,所以我使用更改调用类型 它给我一个与以前相同类型的有效载荷的响应,,但我在这一行得到错误- 错误消息说 我错过了什么?如果响应负载与同步调用的类型相同,那么为什么会出现此解析错误?有什么建议吗? 编辑 为清楚起见,我理解如果调用类型为Event,那么我们只能得

  • 问题内容: 我有一个发出Ajax请求的函数。我如何从中返回响应? 我尝试从回调中返回值,以及将响应分配给函数内部的局部变量并返回该局部变量,但这些方法均未真正返回响应。 问题答案: 问题 在一中的Ajax代表异步。这意味着发送请求(或更确切地说接收响应)已从正常执行流程中删除。在你的示例中,立即返回并且在调用;作为回调传递的函数之前执行下一条语句。 这是一个类比,希望可以使同步流和异步流之间的区别

  • 我使用Java中的创建一个线程池,每个线程在其中执行一些异步任务/调用另一个服务。我不想等待回复,但无论何时回复都会返回。 这样做将等待第一个请求完成,然后返回结果。问题是,第二个请求必须等待第一个请求的响应返回,并且只有在这之后才会被处理。如果我使用CompletableFuture的方法,也会发生同样的情况,因为我还必须使用来获取响应。 我希望所有的请求都经过检查,并在收到时返回回复。这是可以