【问题标题】:Possible to use pipelining with Redis cluster?可以在 Redis 集群中使用流水线吗?
【发布时间】:2018-10-13 06:19:38
【问题描述】:

目前,我们的 Redis 设置涉及 Jedis + 分片。扩大和缩小涉及手动添加/删除分片,这是一项大量的操作工作。我们还严重依赖流水线,因为我们每秒执行大量写入操作。

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

我们知道 Codis 支持流水线 + 自动分片,但由于它依赖于 Zookeeper,因此需要大量的操作工作来维护。它也是 Redis 的一个分支,因此它可能不会随上游更改而更新。如果没有好的解决方案可以在官方 Redis 集群实现中使用流水线,我们很可能会使用它。

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

【问题讨论】:

  • 是的,如果所有键都属于同一个槽,您可以将管道与 Redis 集群一起使用。 This 可能会有所帮助。

标签: redis jedis redis-cluster


【解决方案1】:

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

你也可以自己写实现参考那个,基本思想是捕获所有通过管道发送的命令,并重放它们以进行集群重定向,因为当所有键属于同一个槽时,集群中的管道可以很好地工作。

【讨论】:

    【解决方案2】:

    只是一个更新。我们决定使用 Lettuce 作为 Redis 客户端。它目前已部署到生产环境,并且到目前为止与 ElastiCache Redis 集群模式配合得很好。关键的见解是,Lettuce 通过异步 I/O 实现命令的自动流水线化。我们认为这是一种更好的方法,因为我们不必编写自定义代码来解决 Jedis 限制。

    【讨论】:

      猜你喜欢
      • 2019-07-19
      • 1970-01-01
      • 2014-04-04
      • 2018-03-28
      • 2017-04-24
      • 2017-03-24
      • 2012-11-14
      • 2019-01-22
      • 1970-01-01
      相关资源
      最近更新 更多