Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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 绝地武士支持异步作战吗_Java_Asynchronous_Redis_Jedis - Fatal编程技术网

Java 绝地武士支持异步作战吗

Java 绝地武士支持异步作战吗,java,asynchronous,redis,jedis,Java,Asynchronous,Redis,Jedis,我正在使用Jedis(java客户端)与Redis服务器通信。我有3个Redis实例在三个不同的节点上运行。我想从3个Redis实例中“获取”(读取)一些记录。我想并行地发出这些“get”(读取),然后对接收到的数据进行一些处理,并形成最终输出 在java中实现这一点的最佳方法是什么 其中一种方法是创建3个线程,并(同步地)在每个线程中执行“get”(读取)。等待所有3个命令完成,然后合并结果 绝地武士有没有一种机制,可以通过回调功能异步发出3个“get”(任何与此相关的命令) 我有3个不同的

我正在使用Jedis(java客户端)与Redis服务器通信。我有3个Redis实例在三个不同的节点上运行。我想从3个Redis实例中“获取”(读取)一些记录。我想并行地发出这些“get”(读取),然后对接收到的数据进行一些处理,并形成最终输出

在java中实现这一点的最佳方法是什么

其中一种方法是创建3个线程,并(同步地)在每个线程中执行“get”(读取)。等待所有3个命令完成,然后合并结果

绝地武士有没有一种机制,可以通过回调功能异步发出3个“get”(任何与此相关的命令)



我有3个不同的Redis实例。那么,您是否建议使用“ShardedJedisPipeline”(jedis/tests/ShardedJedisPipelineTest.java)与这些Redis实例并行交互

普通的Jedis管道(Jedis/tests/PipeliningTest.java)只向一个Redis实例发送多个命令,以便在Redis服务器上一个接一个地执行这些命令(最后还有所有可用的响应)

所以我想我必须使用“ShardedJedisPipeline”。但这有两个限制: 1.我想在3个Redis实例上并行执行Lua脚本,即“eval”。
2.我不想让切分(绝地武士使用的一些散列算法)来分发数据,也不想自己(使用其算法)从实例中读取数据。我们有不同的数据分发策略。所以我希望能够指定,记录应该存储在哪个redis实例中,并相应地从何处读取。keytag似乎提供了这种机制,但不确定如何将其与“eval”一起使用。

您可以使用前面提到的管道。
《绝地武士》是一部正在进步的作品,将与下一版本的《绝地武士》一起发行。它将以netty为基础,并与vert.x兼容,直到您可以使用ExecutorService对三个Jedis实例进行滚动,然后等待返回的未来。

截至2015年2月,Jedis显然不支持您需要的单个redis实例上的异步操作:


在您的情况下,我会继续使用3个线程,并按照上面@Xorlev的建议继续使用Futures和Executor服务。

redis.clients.jedis.Pipeline?我有3个不同的redis实例。那么,您是否建议使用“ShardedJedisPipeline”(jedis/tests/ShardedJedisPipelineTest.java)与这些Redis实例并行交互?普通的Jedis管道(Jedis/tests/PipeliningTest.java)只向单个Redis实例发送多个命令,以便在Redis服务器上一个接一个地执行这些命令(以及最后可用的所有响应)。因此我假设我必须使用“ShardedJedispeline”。但这有两个限制:1。我想在3个Redis实例上并行执行Lua脚本,即“eval”。2.我不想让切分(绝地武士使用的一些散列算法)来分发数据,也不想自己(使用其算法)从实例中读取数据。我们有不同的数据分发策略。所以我希望能够指定,记录应该存储在哪个redis实例中,并相应地从何处读取。keytag似乎提供了这种机制,但不确定如何将其与“eval”一起使用。