我有下面的代码来异步从 Redis 获取数据。默认情况下,lettuce 库中的 get() 调用使用 nio-event 线程池。
Code 1:
StatefulRedisConnection<String, String> connection = redisClient.connect();
RedisAsyncCommands<String, String> command = connection.async();
CompletionStage<String> result = command.get(id)
.thenAccept(code ->
logger.log(Level.INFO, "Thread Id " + Thread.currentThread().getName());
//Sample code to print thread ID
打印的线程 ID 是生菜-nioEventLoop-6-2.
Code 2:
CompletionStage<String> result = command.get(id)
.thenAcceptAsync(code -> {
logger.log(Level.INFO, "Thread Id " + Thread.currentThread().getName());
//my original code
}, executors);
打印的线程 ID 是池-1-线程-1.
我的问题:
- 有没有办法让我的执行者通过?
- 是否推荐使用 nio-event 线程池从 redis 获取(使用 get() 调用)数据?
生菜版:5.2.2.发布
谢谢,
阿肖克
class io.lettuce.core.RedisClient
有一个创建者方法:
public static RedisClient create(ClientResources clientResources, String uri) {
assertNotNull(clientResources);
LettuceAssert.notEmpty(uri, "URI must not be empty");
return create(clientResources, RedisURI.create(uri));
}
您可以建立您的ClientResources
by ClientResources#builder()
,并传递任何你想要的东西。请参阅JavaDoc https://lettuce.io/core/release/api/io/lettuce/core/resource/ClientResources.html,有一些东西你可以定制:
- EventLoopGroupProvider 用于获取特定的EventLoopGroup
- EventExecutorGroup 执行内部计算任务
- 定时器用于调度
- 用于客户端事件调度的 EventBus
- 事件发布者选项
- CommandLatencyCollector 用于收集延迟详细信息。需要 HdrHistogram 库。
- DnsResolver 用于收集延迟详细信息。需要 LatencyUtils 库。
- 重新连接延迟。
- 跟踪以跟踪 Redis 命令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)