可以在Redis群集中使用流水线技术吗?

时间:2018-05-03 03:30:07

标签: redis jedis redis-cluster

目前,我们的Redis设置涉及Jedis +分片。向上和向下缩放涉及手动添加/删除分片,这是很多操作工作。由于我们每秒进行大量写操作,因此我们也非常依赖流水线操作。

因此,我们正在研究Redis集群以自动化分片过程。然而,对我们来说,一个突破口是Jedis不支持使用Redis集群进行流水线操作: https://groups.google.com/forum/#!msg/redis-db/4I0ELYnf3bk/Lrctk0ULm6AJ

我们知道Codis支持流水线操作+自动分片,但由于它对Zookeeper的依赖,它需要繁重的操作工作才能维护。它也是Redis的一个分支,因此可能无法通过上游更改进行更新。如果没有好的解决方案可以使用正式的Redis集群实现,那么我们很可能会使用它。

只是想知道是否可以使用官方Redis集群进行流水线操作?也许是替代Redis客户的形式?

2 个答案:

答案 0 :(得分:3)

jedis发布版本尚不支持群集管道,但现在有等待合并的贡献,请参考https://github.com/xetorthio/jedis/pull/1455

您也可以编写自己的实现参考,基本思路是捕获所有使用管道发送的命令,并重放它们以进行集群重定向,因为当所有密钥属于同一个插槽时,集群中的管道可以很好地工作。 / p>

答案 1 :(得分:0)

只是一个更新。我们决定使用Lettuce作为Redis客户。它目前已部署到生产中,并且到目前为止与ElastiCache Redis集群模式都可以正常工作。关键的见解是,Lettuce支持通过异步I / O自动执行命令的流水线操作。我们认为这是一种更好的方法,因为我们不必编写自定义代码来解决Jedis限制。