Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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_Pipeline_Datastore_Jedis - Fatal编程技术网

Java 是否有一个redis库可以自动处理管道?

Java 是否有一个redis库可以自动处理管道?,java,redis,pipeline,datastore,jedis,Java,Redis,Pipeline,Datastore,Jedis,我正在考虑作为一个普通api从客户端触发redis命令的可能性,库可以将命令管道化到其中,并可能以异步方式回复。任何Java库都将不胜感激 任何指向在同一行上工作的开源指针都会有很大的帮助。既有流行的Java Redis客户端,也提供异步/管道。有关示例,请参见。发出命令后,您将获得一个未来,这样您就可以自己同步或处理未来的回调。以更方便的方式提供异步管道。下面是代码示例: RBatch batch = redisson.createBatch(); RFuture<String>

我正在考虑作为一个普通api从客户端触发redis命令的可能性,库可以将命令管道化到其中,并可能以异步方式回复。任何Java库都将不胜感激


任何指向在同一行上工作的开源指针都会有很大的帮助。

既有流行的Java Redis客户端,也提供异步/管道。有关示例,请参见。发出命令后,您将获得一个
未来
,这样您就可以自己同步或处理未来的回调。

以更方便的方式提供异步管道。下面是代码示例:

RBatch batch = redisson.createBatch();
RFuture<String> mapFuture = batch.getMap("test").putAsync("2", "5");
RFuture<Long> longFuture = batch.getAtomicLongAsync("counter").incrementAndGetAsync();

List<?> res = batch.execute();
// or 
RFuture<List<?>> asyncRes = batch.executeAsync();

听起来不是个好主意,在等待包装器发送和处理管道时,clinets线程将挂起。您的用例是什么?因此,如果某个阈值的命令到达包装器,包装器应该推出命令,或者最大超时可能是3ms。想法是优化发送到数据存储的命令数量,这是一种垂直缩放
future.whenComplete((res, exception) -> {

  // handle both result and exception

});

// or

future.thenAccept(res -> {

  // handle result

}).exceptionally(exception -> {

  // handle exception

});