Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将自己的执行器传递到redis库?_Java_Redis_Lettuce - Fatal编程技术网

Java 如何将自己的执行器传递到redis库?

Java 如何将自己的执行器传递到redis库?,java,redis,lettuce,Java,Redis,Lettuce,我有以下代码来异步地从Redis获取数据。默认情况下,库中的get()调用使用nio事件线程池 代码1: StatefulRedisConnection<String, String> connection = redisClient.connect(); RedisAsyncCommands<String, String> command = connection.async(); CompletionStage<String> result = comma

我有以下代码来异步地从Redis获取数据。默认情况下,库中的get()调用使用nio事件线程池

代码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
StatefulRedisConnection=redisClient.connect();
RedisAsyncCommands命令=connection.async();
CompletionStage结果=command.get(id)
.然后接受(代码->
logger.log(Level.INFO,“Thread Id”+Thread.currentThread().getName());
//打印线程ID的示例代码
打印的线程Id为莴苣-6-2

代码2:

CompletionStage<String> result = command.get(id)
            .thenAcceptAsync(code -> {
                         logger.log(Level.INFO, "Thread Id " + Thread.currentThread().getName());
              //my original code
}, executors);
CompletionStage result=command.get(id)
.ThenAcceptsSync(代码->{
logger.log(Level.INFO,“Thread Id”+Thread.currentThread().getName());
//我的原始代码
},遗嘱执行人);
打印的线程Id是池-1-Thread-1

我的问题是:

  • 有办法通过我的遗嘱执行人吗
  • 是否建议使用nio事件线程池(使用get()调用)从redis获取数据
  • 莴苣版本:5.2.2.0发布

    谢谢,
    Ashok

    io.莴苣.core.RedisClient
    有一个创建者方法:

    公共静态RedisClient创建(ClientResources ClientResources,字符串uri){
    assertNotNull(clientResources);
    lettuceasert.notEmpty(uri,“uri不能为空”);
    返回create(clientResources,RedisURI.create(uri));
    }
    
    您可以通过
    ClientResources\35; builder()
    构建您的
    ClientResources
    ,并传递您想要的任何内容。请参阅,您可以自定义以下内容:

    • EventLoopGroupProvider以获取特定的EventLoopGroups
    • EventExecutorGroup以执行内部计算任务
    • 调度计时器
    • 用于客户端事件调度的EventBus
    • 事件发布
    • CommandLatencyCollector收集延迟详细信息。需要HdrHistogram库
    • DnsResolver用于收集延迟详细信息。需要LatencyUtils库
    • 重新连接延迟
    • 跟踪到跟踪Redis命令