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