我正在使用Jedis(
java客户端)与Redis服务器进行通信.我在三个不同的节点上运行了3个Redis实例.我想从3个Redis实例中“获取”(读取)一些记录.我想并行发出这些“获取”(读取),然后对接收到的数据进行一些处理并形成最终输出.
在java中执行此操作的最佳方法是什么?
其中一种方法是创建3个线程并在每个线程中“获取”(读取)(同步).等待所有3个命令完成,然后合并结果.
Jedis是否有一种机制可以异步发出3个“获取”(任何命令),具有回调功能?
我有3个不同的Redis实例.那么你建议使用“ShardedJedisPipeline”(jedis / tests / ShardedJedisPipelineTest.java)并行处理这些Redis实例吗?
普通的Jedis管道(jedis / tests / PipeliningTest.java),只是向单个Redis实例发送多个命令,因此它们在Redis服务器上一个接一个地执行(并且最后的所有响应都可用).
所以我假设我必须使用“ShardedJedisPipeline”.但是这有两个局限:
1.我想在3个Redis实例上并行执行Lua脚本,即“eval”.
2.我不想要分片(Jedis使用的一些散列算法)来分发数据,或者自己(使用它的算法)从实例读取数据.我们有不同的数据分发策略.所以我希望能够指定,记录应存储在哪个redis实例中,并相应地从哪里读取. keyTags似乎提供了这种机制,但不确定如何将其与“eval”一起使用.